使用Nginx运行PHP时未find文件

最近我安装了最新版本的Nginx,看起来我很难用PHP来运行它。

这是我用于域的configuration文件:

server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; } 

}

这里是错误日志文件中的错误:

 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream 

尝试另一种* fastcgi_param *的东西

 fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; 

我有“文件未find”的问题,所以我把“根”的定义上移到“服务器”括号,以提供所有位置的默认值。 你总是可以通过给它自己的根目录来覆盖它。

 server { root /usr/share/nginx/www; location / { #root /usr/share/nginx/www; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } } 

另外,我可以在我的位置定义根。

也许现在回答太迟了,但是有一些事情,因为这是一个非常恼人的错误。 以下解决scheme适用于Mac OS X Yosemite。

  1. 这是最好的,如果你有

fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;

  1. 包含快速的cgi参数应该在这条线之上。

  2. 你所有的目录到你正在执行的PHP文件(包括那个文件)都应该有a+x权限,例如

 sudo chmod a+x /Users/ sudo chmod a+x /Users/oleg/ sudo chmod a+x /Users/oleg/www/ sudo chmod a+x /Users/oleg/www/a.php 

在我的情况下,PHP脚本本身返回404代码。 与nginx无关。

我也有这个错误。 在我的情况下,这是因为有另一个虚拟主机指向同一个根目录。

在我的情况下,这是因为根网站目录的权限设置不正确。 要做到这一点,当你在terminal中运行这个时,你需要在父文件夹中:

 sudo chmod -R 755 htmlfoldername 

这将chmod html文件夹中的所有文件,出于安全原因,build议不要将其用于生产,但应该让您看到该文件夹​​中的文件,以确保在进行故障排除时不会出现问题。

对我来说,问题是位置path上的错字。

也许首先要检查这种问题

是项目的path。

我只花了40分钟试图debugging一个非工作/状态:

 $ SCRIPT_NAME=/status SCRIPT_FILENAME=/status QUERY_STRING= REQUEST_METHOD=GET cgi-fcgi -bind -connect /var/run/php5-fpm.sock 

它只是产生“文件未find”的错误,而实际的脚本(在文件系统上find)工作得很好。

结果发现,我有几个孤立的php5-fpm进程。 我杀了一切后,重新启动php5-fpm干净,它只是恢复正常。

希望这可以帮助。