How to Install PHP ISAPI on IIS7

With the release of Windows Server 2008 and IIS 7, Microsoft has included PHP5 FASTCGI support. ISAPI is still faster in my opinion, and if used correctly, very stable. PHP uses a 32-bit DLL so it will not work with an x64 system. There are several ports of PHP to x64, but all have proved to be unstable. Below I will outline the steps to install PHP 32-bit ISAPI on Windows 2008 x64 (and have it stable). Update: These instructions also work on Windows 2008 x86 (32-bit), just leave out steps 8 & 9.

  • Install the PHP4 or PHP5 package (32-bit) in C:\PHP or wherever you like. Only use the Windows installer from php.net if you do not need any extensions. I would recommend downloading the PHP zip package.

Update April 2010: The PHP VC6 x86 Thread Safe package is ideal for ISAPI on PHP 5.2.x. ISAPI is included in PHP 5.2.x, but not 5.3.x. If you want to use the 5.3.x branch with ISAPI you’ll need to compile it yourself! The VC6 Non-Thread Safe package is ideal for FastCGI implementations for 5.2.x. For 5.3.x branches, PHP has introduced VC9 packages, go here for 5.3.x install with VC9.

  • Open the Internet Information Services (IIS) Manager.
  • Double-click “Handler Mappings” from the main IIS screen.
  • Click on “Add Script Map.”
  • Set up the handler mapping for c:\PHP\php5isapi.dll with extension *.php and check to allow the ISAPI extension and execution of scripts.
  • Double-click “ISAPI & CGI Restrictions” on the main IIS screen. Right-click on PHP and select “Edit Feature Settings” and check “Allow unspecified ISAPI modules.”
  • Right-click on the Default Application Pool (or the one you want to use if more than one) and select “Advanced Settings.”
  • Change the “Enable 32-bit Applications” to True. Click OK. This spawns the App Pool in 32-bit mode, so if you have other modules that need to be run in 64-bit mode, best to separate the website into two App Pools: one 32-bit and one 64-bit.
  • Restart the server.