apache — не удается загрузить c: /php/php5apache2_4.dll на сервер: указанный модуль не найден

При попытке использовать PHP 5.6.30 с Apache 2.4, кажется, существует довольно известная проблема (за исключением использования Docker), но, похоже, нет реального решения для ее устранения. Я получаю следующую ошибку:

httpd.exe: синтаксическая ошибка в строке 534 файла C: /Apache24/conf/httpd.conf: невозможно загрузить файл c: /php/php5apache2_4.dll на сервер: указанный модуль не найден.

Исследуя каталог C: \ php (внутри контейнера Docker), я вижу, что DLL явно там

03/09/2017  04:34 PM    <DIR>          .
03/09/2017  04:34 PM    <DIR>          ..
01/18/2017  08:12 PM            69,632 deplister.exe
03/09/2017  04:34 PM    <DIR>          dev
03/09/2017  04:34 PM    <DIR>          ext
03/09/2017  04:34 PM    <DIR>          extras
01/18/2017  08:12 PM         1,290,752 glib-2.dll
01/18/2017  08:12 PM            16,384 gmodule-2.dll
01/18/2017  08:12 PM        25,672,192 icudt57.dll
01/18/2017  08:12 PM         2,065,920 icuin57.dll
01/18/2017  08:12 PM            51,200 icuio57.dll
01/18/2017  08:12 PM           257,536 icule57.dll
01/18/2017  08:12 PM            50,176 iculx57.dll
01/18/2017  08:12 PM            63,488 icutest57.dll
01/18/2017  08:12 PM           196,096 icutu57.dll
01/18/2017  08:12 PM         1,456,128 icuuc57.dll
01/18/2017  08:12 PM            79,408 install.txt
03/09/2017  04:34 PM    <DIR>          lib
01/18/2017  08:12 PM         2,244,096 libeay32.dll
01/18/2017  08:12 PM            46,592 libenchant.dll
01/18/2017  08:12 PM           185,344 libpq.dll
01/18/2017  08:12 PM           237,056 libsasl.dll
01/18/2017  08:12 PM           213,504 libssh2.dll
01/18/2017  08:12 PM             3,286 license.txt
01/18/2017  08:12 PM           557,659 news.txt
01/18/2017  08:12 PM                43 phar.phar.bat
01/18/2017  08:12 PM            53,242 pharcommand.phar
01/18/2017  08:12 PM            59,392 php-cgi.exe
01/18/2017  08:12 PM            32,256 php-win.exe
01/18/2017  08:12 PM            79,872 php.exe
01/18/2017  08:12 PM             2,523 php.gif
01/18/2017  08:12 PM            75,684 php.ini-development
01/18/2017  08:12 PM            75,715 php.ini-production
01/18/2017  08:12 PM            32,768 php5apache2_4.dll <--- look right here
01/18/2017  08:12 PM           846,630 php5embed.lib
01/18/2017  08:12 PM           168,960 php5phpdbg.dll
01/18/2017  08:12 PM         8,343,040 php5ts.dll
01/18/2017  08:12 PM           181,760 phpdbg.exe
01/18/2017  08:12 PM            21,360 readme-redist-bins.txt
01/18/2017  08:12 PM             3,634 snapshot.txt
01/18/2017  08:12 PM           353,792 ssleay32.dll
35 File(s)     45,087,120 bytes

это ответ говорит об использовании той же самой битовой версии (я использую 64-битную версию), а также о том, что версии являются поточно-ориентированными. Здесь, в моем Dockerfile, вы можете увидеть ссылки на 64-битные поточно-ориентированные версии Apache и PHP:

FROM microsoft/windowsservercore

RUN powershell -Command \
$ErrorActionPreference = 'Stop'; \
Invoke-WebRequest -Method Get -Uri https://www.apachelounge.com/download/VC11/binaries/httpd-2.4.25-win64-VC11.zip -OutFile c:\apache.zip ; \
Expand-Archive -Path c:\apache.zip -DestinationPath c:\ ; \
Remove-Item c:\apache.zip -Force

RUN powershell -Command \
$ErrorActionPreference = 'Stop'; \
Invoke-WebRequest -Method Get -Uri "http://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe" -OutFile c:\vcredist_x64.exe ; \
start-Process c:\vcredist_x64.exe -ArgumentList '/quiet' -Wait ; \
Remove-Item c:\vcredist_x64.exe -Force

RUN powershell -Command \
$ErrorActionPreference = 'Stop'; \
Invoke-WebRequest -Method Get -Uri http://windows.php.net/downloads/releases/php-5.6.30-Win32-VC11-x64.zip -OutFile c:\php.zip ; \
Expand-Archive -Path c:\php.zip -DestinationPath c:\php ; \
Remove-Item c:\php.zip -Force

RUN powershell -Command \
$ErrorActionPreference = 'Stop'; \
Remove-Item c:\Apache24\conf\httpd.conf ; \
new-item -Type Directory c:\www -Force ; \
Add-Content -Value "'<?php phpinfo() ?>'" -Path c:\www\index.php

ADD httpd.conf /apache24/conf

WORKDIR /Apache24/bin

CMD /Apache24/bin/httpd.exe -w

Обратите внимание, что компилятор Visual Studio предназначен для 2015 года. Мне действительно нужно выровнять игровое поле для использования компилятора?

Наконец, следующие строки в httpd.conf (строка 534, упомянутая в ошибке, является строкой, начинающейся с LoadModule) — то, что вызывает ошибку, чтобы показать в журналах Docker для контейнера при запуске. Я прокомментировал их в данный момент, чтобы я мог запустить Apache как автономный (что позволило мне изучить, что происходит внутри контейнера).

# configure the path to php.ini
# PHPIniDir "C:/php"# LoadModule php5_module "c:/php/php5apache2_4.dll"# AddHandler application/x-httpd-php .php

Я планирую развернуть некоторый существующий код PHP в контейнере и не хочу обновляться до PHP7 (что создаст дополнительную работу для исправления некоторых вещей с помощью кода, который не будет работать на PHP7). Помимо обновления до PHP 7, есть ли другой способ исправить проблему?

2

Решение

Вам нужно будет установить предыдущие версии распространяемого VC, так как более поздние версии не охватывают более ранние. Версия, использованная для компиляции, должна быть указана на зеркале, с которого вы ее загрузили. Страница загрузки Windows на официальном сайте PHP указано, что использовался 2014 год, но вам также может повезти с 2012 годом.

Вы также должны настроить свою конфигурацию так:

LoadModule php5_module "c:/php/php5apache2_4.dll"
<IfModule php5_module>
# configure the path to php.ini
PHPIniDir "C:/php"AddHandler application/x-httpd-php .php
</IfModule>
3

Другие решения

У меня была та же ошибка, и я пытался исправить ее, но последнее, что я попробовал, теперь сработало.

Ниже приведен код:

<IfModule php5_module>
LoadModule php5_module "c:/php/php5apache2_4.dll"# configure the path to php.ini
PHPIniDir "C:/php"AddHandler application/x-httpd-php .php
</IfModule>
0

По вопросам рекламы [email protected]