A common Nginx + PHP error message “No input file specified.”

nginx.conf

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

    server {
        listen       80;
        server_name  localhost;

        location / {
            root www;
            index  index.html index.htm;
        }

		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;
		}

    }

}

Tested with Nginx 1.12.1 + PHP 7.1

Solution

PHP unable to find the .php file to execute, because the root file path in location / {} doesn’t apply to the location ~ \.php$.

To solve it, move the root file path to server block like this :

nginx.conf

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

    server {
        listen       80;
        server_name  localhost;

		# Move the root file path to server block.
		root www;
		
        location / {
			#root www;   
            index  index.html index.htm;
        }

		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;
		}

    }

}

References

  1. Nginx + PHP on Windows
  2. PHP-FastCGI on Windows