Installing PHP 5 on IIS in 5 simple steps

Categories:

Set the PHP Application Mapping in IIS

Before IIS will parse PHP scripts, you must first create an application mapping for PHP. This application mapping basically tells IIS what ISAPI dll, or CGI executable to use to process files of a certain file extension (in this case .php). There are two ways in which we can do this, via the command line or via the IIS MMC snap in. I'm going to show you how to do both.

As this is a universal PHP installation guide for IIS 5.0, 5.1 and 6.0 there are limited universal ways in which to add the PHP application mapping via the command line. What ever you do though do not use the adsutil.vbs script to try and add you PHP application mapping, at least not without understanding it's limitations. When you add/delete an application mapping with adsutil.vbs there is no way you can add/delete a single item at a time. So by using adsutil.vbs to add an application mapping you will effectively delete every other mapping at that level. However, what you can do is use David Wang's awesome chglist.vbs script to add the PHP application mapping without effecting existing mappings. You can download this script from David's old blog or from the bottom of this page. Once you have saved the script, simply open a command window and change into the directory that contains your script and type this in;

chglist.vbs W3SVC/ScriptMaps "" ".php,D:\PHP\php5isapi.dll,5" /INSERT /COMMIT

This will add the PHP ISAPI script map to the root of the IIS metabase, and any sites created after adding this script will automatically inherit it. If you want to add the PHP application mapping to a specific website then you will need to modify the W3SVC/ScriptMaps section of the command to suite. If none of this makes sense at all, don't worry because all this can be done using the GUI as well which we will cover now.

  • Open the IIS MMC and right click on the Web Sites container (or click on any specific website you wish to add PHP to) and select the properties menu item


figure 6

  • Once the Web Sites Properties window opens select the Home Directory tab and click the Configuration button as shown below in figure 7.


figure 7

  • This will bring you to the Application Configuration window. Click the Add button at the bottom to add the PHP application mapping as shown below in figure 8.


figure 8

  • In the Extension field enter .php and then click on the browse button in the top right and select the php5isapi.dll file from inside you PHP installation directory (e.g D:\PHP). The default is to accept all verbs, but if you wish you can limit the verbs to tighten security for you PHP application mapping. Ensure that the Script engine and Check that file exists options as ticked and then press ok until you exit the properties windows.


figure 9

That is it, IIS should now be configured to serve PHP content. There is one exception though and that is if you are using IIS 6 then you will also need to configure a Web Extension, so if you are using IIS 5.0 or 5.1 you can proceed onto the next section. You can set the Web extension via command line using iisext.vbs or via the Gui. Using the iisext.vbs at the command prompt you'll need to type in this, but be sure to change the path to php5isapi.dll to suit your environment ;

iisext.vbs /AddFile D:\php\php5isapi.dll 1 PHP5ISAPI 1 "PHP 5 ISAPI"

To add the extension via the GUI, read on;

  • Open the IIS MMC and expand the server tree. Right click on the Web Service Extensions option and select the Add a new Web service extension option.


figure 10

  • In the Extension name field put in a descriptive name, such as PHP 5 ISAPI as shown below in figure 11. Make sure the Set extension status to Allowed option is checked and then click the Add button.


figure 11

  • In the Add file window click the Browse button and navigate to your PHP installation directory and select the php5isapi.dll file as shown below in figure 12. Then click the ok button until you exit back into the IIS MMC.


figure 12

All done, now your IIS 6 web server is all set to serve PHP content.

Comments

Brashquido's picture

First thing I would try if

First thing I would try if you haven't already done so is turning off the "Show friendly HTTP error messages" option in IE7. This can be found by going to tools > internet options > advanced.

As a general rule of thumb I would steer clear of using directory structure with spaces in them, especially when dealing with software whose origin is from a *nix background such as PHP. That said I am sure I have had working PHP environments with the installation dirs in Program Files before, so without looking at the system I'm not exactly sure. One thing you could try is to use the 8.3 format naming convention when setting the path to php5isapi.dll, so it would look like this;

C:\PROGRA~1\PHP\PHP5isapi.dll

This way you wouldn't need to use the "" to enclose the path.

----------------
Dominic Ryan
3 x Microsoft IIS MVP, MCSE, MCSA
IIS Aid owner/webmaster

Anonymous's picture

problems

Good Day for all,

i´m install php 5.2.4, mysql community edition 5 on II6 and win 2003 server, and my problem is:

i´m test with phpinfo file and get next message:

"The system cannot find the path specified."

and i´m check enviroment paths, and everything is ok. could u give me some help?¡

Brashquido's picture

The places you'll really

The places you'll really need to look at at your PHPRC and PATH environment variables, but as you've said you've check those I'd double check your PHP application mapping path in the IIS Admin control panel. For the moment I'd also advise you do disable all your PHP extensions in php.ini, just so we know PHP isn't looking for some other library related to your PHP extensions.
----------------
Dominic Ryan
3 x Microsoft IIS MVP, MCSE, MCSA
IIS Aid owner/webmaster

Anonymous's picture

Getting error while creating chglist.vbs script

I have installed PHP on IIS. I had followed all steps upto creating chglist.vbs script. But at this step i am getting an error as

Windows Script Host

Script: D:......
Line:1
Char:1
Error: Invalid Character
Code:800A0408
Source:Microsoft VBScript compilation error

I found this script on David Wang's blog

Please suggest any remedy for the above error...

thnx in advance
Regards
Amar

Brashquido's picture

If you downloaded the script

If you downloaded the script from my site and have not edited it at all then it should work. If you do edit it, make sure that you only edit it with something like notepad, as word processes such as Word will cause issues. For example the ' character which is the first character in the script will be saved as a ` if you save it at all from Word which is invalid.
----------------
Dominic Ryan
3 x Microsoft IIS MVP, MCSE, MCSA
IIS Aid owner/webmaster

Anonymous's picture

got it working at last

i finaly got php to display the test page thanks to your guide

but i have a question for u.......

dos ;extension=php_mysql.dll and remove the semi colan (;) conect php to mysql coz im having a real problem with something called joomla thats not leting me connect it to the mysql database.

thanks in advance

hempy =)

Brashquido's picture

That's great hempy, glad the

That's great hempy, glad the guide helped! You are correct, removing the semi colan from the front of ;extension=php_mysql.dll will load the MySQL extension to enable you to connect to a MySQL database. Be sure to restart IIS in order to make the changes effective.
----------------
Dominic Ryan
3 x Microsoft IIS MVP, MCSE, MCSA
IIS Aid owner/webmaster

Anonymous's picture

same problem with blank page

I got the same problem displaying blank page without any error msg. I run the PHP as a CGI mode. my test page is

something

just the "something" display but no "php"

any reason?

thanks

Brashquido's picture

First thing to do is to make

First thing to do is to make sure the display_errors directive in php.ini is turned on so that if there are any errors they are printed to your screen. Also, what do you mean exactly when you said you test page is "something"? You test page should contain something like this;

<?php
phpinfo
();
?>

----------------
Dominic Ryan
3 x Microsoft IIS MVP, MCSE, MCSA
IIS Aid owner/webmaster

Anonymous's picture

php code appear

I have the same problem:
When going to see my "phpinfo.php"
The only thin I see on my browser is the code of the file:

<?php
phpinfo
();
?>

Thanks