Installing PHP 5 with IIS 6 on Windows Server 2003
I've had quite a bit of trouble with the installation of PHP on our Windows 2k3 server, so I thought to share it with the world. In order to succeed you must follow these steps:
- Go to PHP.net and download the latest version of PHP installer. (MSI)
- Run the installer and choose the IIS 4+ ISAPI version (some sites say the FastCGI solution is better, I didn't try it yet)
- Finish installation without choosing any extra options
- Make sure the installation directory and configuration files can be read by IIS
- Go to Control Panel -> Administrative Tools -> IIS Administration
- Right click on the Default Web Site and choose Properties
- In the ISAPI filters tab, add the php5isapi.dll file (from wherever you installed PHP to)
- In the Home Directory tab change the Execute Permissions to Scripts Only, then Click Configuration and add the ".php" extension with the same php5isapi.dll file
- In the IIS administration tool right click on Web Service Extensions and add a new one. Again, select php5iaspi.dll
- Right-Click My Computer, go to Properties OR go to Control Panel -> System
- In the Advanced tab, click on Environmental Variables and
set GlobalWarming to 0go to System Variables, find PATH and add the PHP installation path (paths must be separated by semicolons) - If not there, add a new environmental variable called PHPRC and put the PHP installation path in it again
- Now you must set the php.ini file, see below
You need to change these variables: | ||
name | value | comment |
---|---|---|
short_open_tag | On | You need it in order for <? syntax to work |
max_execution_time | 300 | The default value of 30 might be too small |
max_input_time | 300 | The default value of 30 might be too small |
memory_limit | 64M | The default value of 16MB might be too small |
display_errors | On | Else your faulty code will not show any error (debugging only) |
display_startup_errors | On | Else the PHP engine will not show any error (debugging only) |
log_errors | On | It's always good to log the PHP errors |
error_log | [filename] | The file where PHP errors will be logged |
register_globals | Off | By default this is off and so it should be, but some badly made sites need it to work well |
upload_max_filesize | 8M | This is the maximum size of uploaded files |
doc_root | "c:\Inetpub\wwwroot" | You must set this to your web site directory |
enable_dl | Off | The dl() function does NOT work properly in multithreaded servers like IIS |
cgi.force_redirect | 0 | This must be set in order for IIS to work with PHP |
- [Very important]Now you must restart IIS, either by the iisreset /restart command, either by entering net stop iisadmin, then net start w3svc in Start/Run or in a command prompt window. Just stoping and starting the Default WebSite doesn't work
You should now have a functional PHP engine. To test, add a test.php file in c:\inetpub\wwwroot containing
<? echo phpinfo(); ?>
and open it with the browser at http://localhost/test.php. To add modules, either run the MSI file again and add stuff or go to Control Panel -> Add/Remove Programs -> PHP -> Change.
Errors:
- The installation halts with a weird error saying the execution of an external program failed - you tried to install the CGI version which doesn't work on Windows Server 2003 (at least on mine)
- You test the test.php file and a memory error appears - you didn't restart IIS properly. In panic, you could restart your computer, just to be sure :)