Запуск PHP: невозможно загрузить динамическую библиотеку, Windows, Apache 2.2, php 5.2.11

Это становится очень неприятной проблемой. Я пытаюсь выполнить чистую установку 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

введите описание изображения здесь