Zend-сервер в Windows не загружает php_ibm_db2.dll

Я провел целый день, пытаясь заставить свой Zend Server на локальном хосте (Windows 8) читать файл DB2 в системе i5.

Я следил за многими руководствами и читал ответы на подобные вопросы, и теперь:

  • У меня на машине установлен IBM Express-C
  • У меня есть php_ibm_db2.dll в папке ext\
  • application.ini имеет расширение = php_ibm_db2.dll, указывающее на нужную папку
  • мой путь к переменной среды имеет [...] C:\Program Files\ibm\gsk8\lib64;C:\Program Files (x86)\ibm\gsk8\lib;C:\PROGRA~1\IBM\SQLLIB\BIN; C:\PROGRA~1\IBM\SQLLIB\FUNCTION;C:\PROGRA~1\IBM\SQLLIB\SAMPLES\REPL;

Но перезагружая сервер, в журналах я нахожу «Предупреждение PHP: запуск PHP: невозможно загрузить динамическую библиотеку« C: \ Program Files (x86) \ Zend \ ZendServer \ lib \ phpext \ php_ibm_db2.dll '»

Даже если это правильный путь к dll.

И сервер не распознает db2_connect() (не определено)

Любая идея о том, что происходит? Возможно ли, что проблема в Windows 8 64bit?


person mauoftheclouds    schedule 20.11.2013    source источник


Ответы (2)


Я предполагаю, что DLL скомпилирована для несовместимой версии PHP. Вы можете получить альтернативную сборку расширения здесь: http://sourceforge.net/projects/db2mc/files/IBM_DB2%20PHP%20Driver%20for%20Windows/

Я не вижу сборки для PHP 5.5. Это может означать, что вы не сможете заставить его работать с PHP 5.5, не скомпилировав его самостоятельно.

Для PHP 5.4 обратите внимание на разницу между ts (поточно-ориентированной) и nts (непоточно-ориентированной) установками PHP.

Для более старых выпусков PHP обязательно возьмите что-нибудь, созданное с помощью совместимого компилятора. Вероятно, вам нужен VC9 (Visual C++ 9), поскольку он соответствует официальной загрузке PHP. .

person Leo    schedule 20.11.2013
comment
Прежде всего, большое спасибо за ваш ответ. Работает версия php 5.4.21 на Zend Server версии 6.2.0 с отключенной безопасностью потоков. php -m возвращает мне ibm_db2, но предупреждение при загрузке сервера продолжается, и Technology Explorer для IBM v4.2 подтверждает: Проверка драйвера базы данных PHP: PHP-модуль IBM_DB2 не найден. Кажется, я сдаюсь... :( - person mauoftheclouds; 21.11.2013
comment
Это все еще сломано с этой .dll? sourceforge.net/projects/db2mc/files/ - person Leo; 21.11.2013
comment
Нечего делать, это тот, который я сейчас использую (или пытаюсь...) Должен ли я куда-то поместить php_ibm_db2.pdb? - person mauoftheclouds; 22.11.2013

На что указывает extension_dir в application.ini. Похоже, вы указали extension= и extension_dir тоже имеет какое-то значение. Следовательно, 2 пути могут быть добавлены, что приведет к ошибке

Не могли бы вы проверить вышеизложенное, если это так, и попробовать, исправив путь в extension_dir и только имя модуля (php_ibm_db2.dll) в extension.

Спасибо

Правин

person Praveen D    schedule 25.11.2013
comment
Привет, я обнаружил, что extension_dir и объявления расширений находятся в php.ini, а не в application.ini (моя ошибка). Во всяком случае, они кажутся правильными: extension_dir=C:\Program Files (x86)\Zend\ZendServer\lib\phpext extension=php_ibm_db2.dll, и я подтверждаю, что C:\Program Files (x86)\Zend\ZendServer\lib\phpext \php_ibm_db2.dll - правильный путь. Спасибо за ответ - person mauoftheclouds; 25.11.2013
comment
Привет. Следующее, что я хотел бы проверить, учитывая, что php -m правильно загружает dll (давайте назовем его автономным) ... распознаются ли ваши настройки PATH Zend (Apache) ... если соответствующий параметр PATH не виден для Apache, тогда скорее всего, dll не будет найдена и, следовательно, ошибка. ‹br› Подсказка: возможно, придется проверить httpd.conf - person Praveen D; 25.11.2013
comment
Я проверил и обнаружил, что при вводе php -m в разделе [Модули PHP] появляется ibm_db2, но он все еще не работает (и не загружается сервером). Если я попытаюсь подключиться, первое, что я увижу, это уведомление: Примечание: использование неопределенной константы DB2_AUTOCOMMIT_ON — предполагается, что «DB2_AUTOCOMMIT_ON» в C:\Program Files (x86)\Zend\ZendServer\data\libraries\Zend_Framework_1\1.12.3\library \Zend\Db.php в строке 270 Возможно, это поможет... Спасибо за ответ! - person mauoftheclouds; 28.11.2013