Nginx + PHP on Windows

This article shows you how to install and integrate Nginx and PHP on Windows.

Tested

  1. Nginx 1.12.1
  2. PHP 7.1.10
  3. Windows 10

1. Install Nginx + PHP

Basically, just download zip file and extracts it, no installation.

To install Nginx

  1. Visit http://nginx.org/en/download.html
  2. Download nginx/Windows-1.12.2
  3. Extract to C:\nginx-1.12.1

To Install PHP

  1. Visit http://windows.php.net/download/
  2. Download PHP7.1 download VC14 x64 Non Thread Safe
  3. Extract to C:\php7.1.10
Note
This PHP VC14 builds require to have the Visual C++ Redistributable for Visual Studio 2015 installed

2. Integrate Nginx + PHP

Nginx communicates with PHP via php-cgi.exe

2.1 Start PHP at 127.0.0.1:9999

Terminal

c:\php7.1.10>php-cgi.exe -b 127.0.0.1:9999

2.2 Edit Nginx conf file.

C:\nginx-1.12.1\conf\nginx.conf

http {
    include       mime.types;
    default_type  application/octet-stream;

    server {
        listen       80;
        server_name  localhost;

		# Declares here, so that $document_root is able to find php files
		root www;
		
        location / {
            index  index.html index.htm;
        }

		# For PHP files, pass to 127.0.0.1:9999
		location ~ \.php$ {
			fastcgi_pass   127.0.0.1:9999;
			fastcgi_index  index.php;
			fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
			include        fastcgi_params;
		}

    }

}

2.3 Create a C:\nginx-1.12.1\www folder.

2.4 Create a simple PHP file and put it into the www folder.

C:\nginx-1.12.1\www\print.php

<?php
	phpinfo();
?>

2.5 Start Nginx

Terminal

C:\nginx-1.12.1> start nginx

3. Demo

http://localhost/print.php

Done.

References

  1. Nginx official websites
  2. PHP For Windows
  3. PHP-FastCGI on Windows
  4. php-cgi.exe – The application was unable to start correctly
  5. Nginx + PHP – No input file specified

18 comments on “Nginx + PHP on Windows

  1. Great solution.
    Working. So much faster then Apache o. Windows.

    Reply
  2. It did well !!

    But my little Q is how to stop php service???

    Reply
  3. This will serve the print.php but not index.php for an application.
    To serve your app the first location block needs to be
    location / {
    try_files $uri $uri/ /index.php;
    }

    Reply
  4. In step 2.2 what does this mean? “fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;” is the first SCRIPT_FILENAME a variable?

    Thanks,

    Reply
  5. nginx is running, but not serving. why???

    Reply
  6. Thanks a lot! It really helped after a couple of hours of vain search.

    Reply
  7. This is nice and all, but php-cgi dies after some requests. Have you ever seen this issue?

    Reply
      1. Do you have the steps to install this on Windows with PHP?

        Reply

Leave a Comment

Your email address will not be published. Required fields are marked *