Search code examples
c#phpasp.netiis-7.5isapi

Calling LoadLibraryEx on ISAPI filter failed


I am working on a PHP/C# Soap Service project and I am having a problem running it in IIS although it was previously working a while ago.

When I try and go to the ASMX file or the WSDL file I get an IIS error:

HTTP Error 500.0 - Internal Server Error Calling LoadLibraryEx on ISAPI filter "C:\php\php5isapi.dll" failed

The php5isapi.dll is in the location specified in the error and it is added to the isapi filter within IIS. I know PHP is working fine as standard .php file works so, but I don't understand why ASMX/WSDL files would be accessing the php5isapi dll as it's not PHP. The soap service is in a C# ASMX Web service.

This only happens why I enable 32 bit applications in the application pool. This needs to be true as when its not it throws an ASP exception stating that a DLL is not in the correct format.

I know the actual service works fine as it runs OK on linux under Mono so there is just something wrong with IIS but I can't see what.

Thanks for any help you can provide.


Solution

  • This looks to be the same issue no? https://bugs.php.net/bug.php?id=39163

    There "FreakTrap at gmail dot com" suggests the following solution:

    sneakers05's modification of the Application Pool's 32-bit setting also corrected the problem I was having with the php5isapi.dll.

    For those of us getting the 'Calling LoadLibraryEx on ISAPI filter "C:\PHP\php5isapi.dll" failed' error after an attempted manual install:

    1) Start with a fresh IIS installation with both ISAPI filters and extensions enabled.

    2) Under the main settings [at the very top of your IIS Manager's hierarchy view, above Application Pools], add the following in this order:

    • an ISAPI Filter for php5isapi.dll
    • a ISAPI and CGI Restriction entry for php5isapi.dll
    • a Handler Mapping for php5isapi.dll

    3) Go to the application Pools section.

    4) Right-click on Default Application Pool and select Advanced Settings.

    5) Set the second option [Enable 32-Bit...] to True.

    Also, it is important that your 'Default Website' not have any unique settings from the top-level configurations. This was causing my ISS to exhibit some pretty strange behavior, which is why I recommend that you first delete your default website and create a new one.

    I feel bad simply suggesting a link but see there is not much activity so thought it might help.