web-dev-qa-db-ja.com

c:/php/php5Apache2_4.dllをサーバーにロードできません:指定されたモジュールが見つかりませんでした

PHP 5.6.30をApache 2.4で使用しようとすると、(Dockerを使用する以外に)やや有名な問題があるようですが、問題を修正するための実際の解決策はないようです。次のエラーが発生します。

httpd.exe:C:/Apache24/conf/httpd.confの534行目の構文エラー: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

この answer は、必ず同じビットバージョン(私は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に問題を修正する他の方法はありますか?

4
Jay Blanchard

以前のバージョンの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
Dissident Rage

私は同じエラーがあり、問題を修正するために多くの手段を試みましたが、私が試みた最後の方法は今はうまくいきました。

以下はコードです:

<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