Как статически скомпилировать DBD:: mysql и переместить файлы на общий хостинг, где у меня есть моя собственная установка perl


  1. я скачал и установил локально на моем Ubuntu ActiveState Perl (ActivePerl-5.14.1.1401-x86_64-linux-glibc-2.3.5-294969.смола.ГЗ).
  2. я сделал "~$ sudo apt-get install libmysqlclient-dev "
  3. я скачал из CPAN DBD:: mysql
  4. Я читаю установить.html И вот в чем моя проблема: Я не уверен, как скомпилировать статически связанный DBD:: mysql, который я могу скопировать из моей локальной установки ActivePerl в тот же perl instalaltion, но на моем общий хостинг-провайдер mashine. Обратите внимание, что загруженная через ftp(нет ssh там) структура каталогов perl работает на общем хостинге (также x86_64-linux) после изменения разрешений исполняемого файла в каталоге ActivePerl/bin/. Мои CGI-скрипты хорошо работают под mod_cgi и mod_fast_cgi на общем хостинге. Я попробовал советы в установочном документе (INSTALL.html#source_installation ), но не повезло. На другом общем хостинге с i586 Active Perl DBD:: mysql просто работает, потому что я первый установил его локально, используя PPM, а затем загрузил через FTP. Однако нет пакета x86_64 с промилле предоставленная компанией ActiveState. Может ли sonmebody предоставить заклинания магии для командной строки (ubuntu 11.04), что-то вроде:

    me@mine:~$ mkdir /tmp/mysql-static
    me@mine:~$ cp /usr/lib/libmysqlclien* /tmp/mysql-static
    me@mine:~$ cd ~/install/Perl/DBD-mysql-4.019/
    me@mine:~/install/Perl/DBD-mysql-4.019$ perl Makefile.PL --libs="-L/tmp/mysql-static -lmysqlclient"
    me@mine:~/install/Perl/DBD-mysql-4.019$ make    
    me@mine:~/install/Perl/DBD-mysql-4.019$ make install
    

... ..хм: кажется, на этот раз все получилось, но в любом случае я написал все вышесказанное... это может быть полезно для других. Я загружу позже сегодня на общий хостинг, чтобы посмотреть, работает ли он.

1 2

1 ответ:

Это работает. Единственное, что нужно знать, это когда вы используете его на общем хостинге. Вы должны подключиться через TCP, а не через сокет Unix:

$dsn = "DBI:mysql:database=$database;host=127.0.0.1;port=3306";
$dbh = DBI->connect($dsn, $user, $password);

Как написано в docs:

чтобы подключиться к серверу MySQL на localhost с помощью TCP / IP, необходимо указать имя хоста как 127.0.0.1 (с дополнительным портом).