PHP on Windows XP w/IIS – An Installation Guide

11 02 2009

Installing PHP on a windows XP operating system has been anything but simple. I have tried both the .msi installation and the manual installation. Working in windows the first thing I always go to is the msi (Microsoft Installer) file but I was completely unsuccessful with this endeavor. After utter failure I decided to attempt a manual installation, it was fairly easy to make it work, but hit a brick wall when it came to extensions. After I figured out how to make the extensions load, I repeated the process several times as to find the best method. I’m sure there are better methods out there but either no one is sharing or I couldn’t find one.

Step 1.
If you have not already installed IIS you will need to dig out your Windows XP CD, otherwise skip this step and move on to installing PHP. Navigate to Start > Run and type ‘appwiz.cpl’ and click ok or press enter, this will open up the Add/Remove Programs Control Panel Interface. From here select the Add/Remove Windows Components from the left menu. Select the Internet Information Server (IIS) checkbox and select Next, installing the software.

Step 2.
Download the PHP Manual Installation .zip package form here is a link to the latest version 5.2.8
Save this file to the desktop, once downloaded extract all files to “C:\php”
Give the Internet user account Read/List access to the c:\php directory this account would be IUSR_COMPUTERNAME

Step 3.
Create / Configure the php.ini file
Open the file c:\php\php.ini-dist in notepad. Select File > Save As from the menu and save it to C:\php as php.ini
There are a few lines that need to be modified to set the proper configuration

Find this code block:

; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
; Windows: “\path1;\path2”
;include_path = “.;c:\php\includes”

remove the leading semi-colon ‘;’ from the bottom line to look like this:

; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
; Windows: “\path1;\path2”
include_path = “.;c:\php\includes

Find this line

 doc_root =

and change it to

doc_root =”c:\Inetpub\wwwroot”

Find this line

extension_dir = “./”

and change it to

extension_dir = “c:\php\ext”

Now select the extensions that are to be used they are locate below the line with this text

; Windows Extensions

Simply un-comment each desired extension by delete the preceding semi-colon “;” here is a sample of the gd2 extension set to enabled


there are several extensions available only use the ones needed.

Click File > Save
Copy this file to c:\Windows as well

Step 4.
Add c:\php to the windows path
Right-Click My Computer and select properties
Click the Advanced Tab then the Environment Variables button near the bottom.
In the system variables group find the variable called path and modify it’s value to include c:\php

It should now look similar to this

Step 5.
Configure IIS to use PHP
Visit Control Panel > Administrative Tools > Internet Information Services
Drill down until you find a node called  “Default Web Site” Right-Click this and select Properties
Select the ISAPI Filters Tab and then the Add button.

Fill in this information

Filter Name: PHP
Executable: C:\php\php5isapi.dll

Click OK
Next select the Home Directory Tab then the Configuration button near the bottom
Press the Add button

Enter the following Information

Executable: C:\php\php5isapi.dll
Extension: .php
Verbs: All Verbs
Script Engine: Checked
Check that file exists: Uncheck

Presss OK

Step 6.
Create a PHP configuration test page.
Open Notepad and paste the following


Save this file as c:\Inetpub\wwwroot\phpinfo.php

Step 7.
In the command prompt run the following commands

net stop iisadmin

net start w3svc

Step 8.
Start your web browser and visit http://localhost/phpinfo.php
You should now see that php is working but the extensions may not be loaded, usually a reboot will allow this to happen.

In the event that there is a problem and you are not seeing the phpinfo page make sure that the IIS configuration is correct. If there are problems getting extensions to load the best place to look is the phpinfo page, it will show information that can help you to track down the problem.