Это становится очень неприятной проблемой. Я пытаюсь выполнить чистую установку apache 2.2 и PHP 5.2.11. Кажется, что все настроено правильно, но php-модули не запускаются …
PHP Warning: PHP Startup: Unable to load dynamic library '.;C:/Program Files (x86)/Apache Software Foundation/Apache2.2/php/ext/php_mcrypt.dll' - The specified module could not be found.\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '.;C:/Program Files (x86)/Apache Software Foundation/Apache2.2/php/ext/php_mysql.dll' - The specified module could not be found.\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '.;C:/Program Files (x86)/Apache Software Foundation/Apache2.2/php/ext/php_openssl.dll' - The specified module could not be found.\r\n in Unknown on line 0
в php.ini
include_path = ".;C:\Program Files (x86)\Apache Software Foundation\Apache2.2\php" extension_dir = ".;C:/Program Files (x86)/Apache Software Foundation/Apache2.2/php/ext/"
Все файлы есть … Файлы .dll, такие как ssleay32.dll, libmcrypt.dll, libmysql.dll, libeay32.dll, установлены на …
C: / Program Files (x86) / Apache Software Foundation / Apache2.2 / php /
Я также включил их в C: \ Windows \ System32
и даже добавил C: / Program Files (x86) / Apache Software Foundation / Apache2.2 / php / к пути к окну.
Я понятия не имею, почему это не работает, и это похоже на ситуацию без выигрыша. У кого-нибудь есть идеи о том, как заставить все работать нормально?
Попробуй это:
extension_dir = "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/php/ext/"
без начала с .;
Просто для моего будущего, если нет. Это связано с тем, что PHP 5.2.13 работает в Windows на IIS 8.
Я получил следующую ошибку:
PHP Предупреждение: запуск PHP: невозможно загрузить динамическую библиотеку «C: \ Program Files (x86) \ PHP \ ext \ php_openssl.dll» – указанный модуль не найден.
Из phpinfo()
загруженный файл php.ini был C:\Program Files (x86)\PHP\php.ini
.
Каталог расширений:
extension_dir ="C:\Program Files (x86)\PHP\ext"
Это были две последние строки файла php.ini
:
[PHP_SQLSRV] extension=php_sqlsrv_52_nts_vc6.dll [PHP_OPENSSL] extension=php_openssl.dll
php_openssl.dll
и php_sqlsrv_52_nts_vc6.dll
находятся в каталоге ext
. php_openssl.dll
не поврежден (это тот же размер файла, что и на другой машине, работающей).
PHP найдет dll sqlsrv, но не dll openssl. Не знаю, почему. Никакие количества перезапуска IIS не сделали ничего.
Решение, пока я не знаю лучше, это установить расширение openssl.dll с помощью установщика Windows PHP. Вы можете повторно запустить установщик и выбрать «Изменить», и он позволяет добавлять или удалять библиотеки. Я не вижу никакой разницы в файле или файле php.ini, но теперь файл загружается.
Я подозреваю, что моя проблема была похожа на этот комментарий об установке OpenSSL в Windows :
На этом этапе, когда вы запустите Apache, он попытается загрузить php_openssl.dll, но если ваша настройка похожа на мою, вы увидите ошибку. Я предпочитаю запускать Apache вручную, и ошибка появляется в диалоговом окне: «Ординал 4114 не может быть расположен в библиотеке динамических ссылок LIBEAY32.dll». (Я не уверен, получите ли вы это сообщение, если бы вы начали использовать Apache в качестве сервиса). В журнале Apache также содержится сообщение об ошибке, указывающее, что php_openssl.dll не может быть загружен, хотя это сообщение не называет libeay32.dll. Добро пожаловать в DLL Hell.
Libeay32.dll входит в изображение, потому что php_openssl.dll зависит от него (а также от ssleay32.dll). Я думаю, что Apache сначала пытается программно загрузить php_openssl.dll из пути, указанного ключом extension_dir. Но тогда загрузка так называемых зависимых DLL оставлена для механизма Windows по умолчанию. Если Windows обнаружит несовместимую версию зависимой DLL, вы получите сообщение об ошибке.
Я заметил ошибки в ssleay32.dll
при попытке запустить php -i
из командной строки. Я просто предположил, что это не было в окружающей среде. IIS не упоминает о каких-либо ошибках ssleay32.dll
в своих журналах.
Вы просто раскомментируете расширение_dir в php.ini