Nginx + PHP – No input file specified

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

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

Leave a Reply

avatar
newest oldest most voted
Ganool
Guest
Ganool

Thanks for sharing this post, excellent. Really looking forward to read more. Great place! Keep up the superb writing. I will be experiencing most of the issues also.

automovill
Guest
automovill

great article