title: Cannot load c:/php/php5apache2_4.dll into server: The specified module could not be found
body: <p>
  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:</p>
  
  <blockquote>
    <p>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.</p>
  </blockquote>
  
  <p>Examining the directory of C:\php (inside the Docker container) I see the DLL is clearly there</p>
  
  <pre><code>03/09/2017  04:34 PM    &lt;DIR&gt;          .
  03/09/2017  04:34 PM    &lt;DIR&gt;          ..
  01/18/2017  08:12 PM            69,632 deplister.exe
  03/09/2017  04:34 PM    &lt;DIR&gt;          dev
  03/09/2017  04:34 PM    &lt;DIR&gt;          ext
  03/09/2017  04:34 PM    &lt;DIR&gt;          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    &lt;DIR&gt;          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 &lt;--- 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
  </code></pre>
  
  <p>This <a href="https://stackoverflow.com/questions/17609096/php5apache2-4-dll-not-found-error">answer</a> 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:</p>
  
  <pre><code>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 "'&lt;?php phpinfo() ?&gt;'" -Path c:\www\index.php
  
  ADD httpd.conf /apache24/conf
  
  WORKDIR /Apache24/bin
  
  CMD /Apache24/bin/httpd.exe -w
  </code></pre>
  
  <p>Note the Visual Studio compiler is for 2015. Do I really need to level the playing field for using the compiler? </p>
  
  <p>Finally, the following lines in the httpd.conf (<strong><em>line 534, mentioned in the error, is the line starting with <code>LoadModule</code></em></strong>)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).</p>
  
  <pre><code># configure the path to php.ini
  # PHPIniDir "C:/php"
  # LoadModule php5_module "c:/php/php5apache2_4.dll"
  # AddHandler application/x-httpd-php .php
  </code></pre>
  
  <p>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?</p>