Home
About
Blog
Media Gallery

Setting up IIS & PHP


Some reminder notes for setting up a working IIS and PHP environment.

- Install the IIS role/feature w/CGI support.
- Download (NTS / Non-Thread Safe) and unzip at e.g. C:\PHP

- Register index.php as standard document

- Check settings in php.ini
	fastcgi.impersonate = 1
	fastcgi.logging = 0
	cgi.fix_pathinfo=1
	cgi.force_redirect = 0
	date.timezone = "Europe/Oslo"

- Modules I'd like to add as a minimum:
	extension=php_bz2.dll
	extension=php_curl.dll
	extension=php_gd2.dll
	extension=php_gettext.dll
	extension=php_mbstring.dll
	extension=php_mysqli.dll
	
- Add a "Module Mapping" to "Handler Mappings" in IIS:
	Request path: *.php
	Module: FastCgiModule
	Executable: C:\[Path to PHP installation]\php-cgi.exe
	Name: PHP_via_FastCGI
	+ Request Restrictions: "File or folder"
	
- Install Visual C++ 2015 redist (x86 version) to avoid 500 server error.

Extra
- Enforce SSL per site and set up a 403.4 error page with a 302 redirect URL 
  for easy HTTPS enforcement.
  
- Remember that a PHP log file will require sufficient write permissions to be 
  created and updated. E.g. all rights to IUSR and CN\IIS_IUSRS.
  
- Tune the server FastCGI settings for max processes and requests.

- If using a directory that opendir() doesn't like to cleanup sessions from, 
  I just use powershell to remove the ones that are more than 24 hours old:
  Get-ChildItem "PATH" | Where-Object {$_.LastWriteTime -lt (Get-Date).AddHours(-24)} | Remove-Item


Original Post: Jan 28th, '22 00:25 CET.
Updated: Jan 28th, '22 00:26 CET.

Tags: Windows