Cannot load c:/php/php5apache2_4.dll into server: The specified module could not be found

31,060

You will need to install prior versions of the VC Redistributable since later versions do not cover earlier ones. The version used to compile it should be indicated on the mirror you downloaded it from. The Windows download page on the official PHP site indicates 2014 was used but you may have luck with 2012 as well.

You should also set up your configuration as such:

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>
Share:
31,060
Jay Blanchard
Author by

Jay Blanchard

In search of aliens at http://universeofscifi.com Dad. Web developer, designer, freelancer, author, startup creator, model builder, photographer, woodworker, pixel herder, builder of things.

Updated on September 06, 2020

Comments

  • Jay Blanchard
    Jay Blanchard over 3 years

    When trying to use PHP 5.6.30 with Apache 2.4 there seems to be a somewhat well-known issue (outside of using Docker) but there does not seem to be any real solution for fixing the issue. I am getting the following error:

    httpd.exe: Syntax error on line 534 of C:/Apache24/conf/httpd.conf: Cannot load c:/php/php5apache2_4.dll into server: The specified module could not be found.

    Examining the directory of C:\php (inside the Docker container) I see the DLL is clearly there

    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
    

    This answer talks about making sure to use the same bit version (I am using 64 bit) and to also make sure the versions are thread safe, which they are. Here, in my Dockerfile, you can see the links to the 64 bit thread-safe versions of Apache and 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
    

    Note the Visual Studio compiler is for 2015. Do I really need to level the playing field for using the compiler?

    Finally, the following lines in the httpd.conf (line 534, mentioned in the error, is the line starting with LoadModule)are what is causing the error to show in the Docker logs for the container when started. I have them commented out at the moment so I could get Apache to start as a stand-alone (allowing me to examine what is going on inside of the container).

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

    I plan to deploy some existing PHP code in the container and do not want to upgrade to PHP7 (which will create more work to fix some things with code which will fail on PHP7). Outside of upgrading to PHP 7 is there any other way to fix the issue?