Самостоятельная коробка,
RHEL 6
PHP 5.3.3
PDO установлен
установлены freetds
pdo_dblib - пока не удалась установка
Моя цель - использовать PDO с sybase. Попытка установить pdo_dblib из исходного кода php соответствующей версии. Я испробовал множество методов и довольно много искал помощи по этой теме, но пока не добился успеха.
$ ./configure
$ make
$ su root
Password:
$ make install
Это успешно
внутри папки / ext / pdo_dblib:
$ phpize
$ ./configure
$ make
$ make test
Вывод ошибки:
PHP Warning: PHP Startup: Unable to load dynamic library '/home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so' - /home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library '/home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so' - /home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so' - /home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library '/home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so' - /home/sybase/Install_items/php_533_src/php-5.3.3/ext/pdo_dblib/modules/pdo_dblib.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
Это не выглядит хорошо ... Я исследовал это и нашел интересный прием для этого Вот. Но изменение pdo.ini на pdo_0.ini не было решением, так как я все еще получал те же ошибки при тестировании make.
$ su
$ make install
Вывод:
Installing shared extensions: /usr/lib64/php/modules/
Это кажется странным ... и нет, на самом деле он не устанавливается (не отображается на phpinfo после перезапуска apache).
точно следуя инструкциям, я добавляю префикс
$ ./configure --prefix=/usr/local/freetds
$ make
$ su root
Password:
$ make install
Это успешно
внутри папки / ext / pdo_dblib:
$ phpize
$ ./configure --with-sybase=/usr/local/freetds
Это вызывает следующую ошибку внизу вывода
...
checking for PDO_DBLIB support via FreeTDS... yes, shared
configure: error: Cannot find FreeTDS in known installation directories
Вариант freetds ./configure (включая или не включающий --prefix ...) не повлиял на результат, поэтому я пропущу его.
следуя указанному методу Вот.
pecl download pdo_dblib
tar -xzvf PDO_DBLIB-1.0.tgz
Убрана строчка,
<dep type=”ext” rel=”ge” version=”1.0″>pdo</dep>
Сохранил файл package.xml и переместил его в каталог PDO_DBLIB.
mv package.xml ./PDO_DBLIB-1.0
Перешел в каталог PDO_DBLIB, затем установил пакет из этого каталога.
cd ./PDO_DBLIB-1.0
pecl install package.xml
Но эта команда дает мне следующий вывод ошибки, такой же, как Способ 2.
checking for PDO_DBLIB support via FreeTDS... yes, shared
configure: error: Cannot find FreeTDS in known installation directories
ERROR: `/home/sybase/Install_items/pecl_pdo_dblib/PDO_DBLIB-1.0/configure' failed
Вернитесь к первому методу и восстановите freetds с помощью
./configure --enable-msdblib
и возможно
--enable-sybase-compat
Если это все еще не удается, опубликуйте вывод ldd для любого .so, который не загружается.
После метода 1 проверьте свои ini-файлы и убедитесь, что файлы pdo.so и pdo_dblib.so настроены для загрузки. Вы можете сделать это из командной строки с помощью php -i и найти «Загруженный файл конфигурации», а также «Дополнительные проанализированные файлы .ini».
Среди этих файлов убедитесь, что extensionion = pdo.so загружен (возможно / возможно до загрузки вашего pdo_dblib.so). Если вы хотите поддерживать отдельные файлы .ini, вы можете контролировать порядок загрузки с помощью прямого ls -al
заказывает файлы.
Я нашел эту работу в настоящее время:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm && \
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && \
yum update -y && yum install --enablerepo=remi -y \
php-cli \
php-fpm \
php-mssql
Вы можете проверить установленный PDO DBLIB, просеивая вывод следующей команды:
php -i