nginx运行php报错Primary script unknown的解决办法
其实类似的解决方法的文章,网上有很多,但是我觉得总结得不够全面,所以这里单独总结一下。
总而言之,引起这种错误,是由于nginx无法获取到php运行脚本文件。
原因有以下可能:
1、权限不对。比如nginx的运行用户是www,但是文件的拥有用户是root然后不可执行。
2、nginx配置错误。php分段下,默认的配置是
1 | fastcgi_param SCRIPT_FILENAME /scripts/$fastcgi_script_name; |
需要改成
1 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |
至此,应该99%的人都已经解决这个问题,但是如果你还是没搞掂,请看第三种可能
3、nginx的运行配置里没有设置$document_root。这个是需要在sever分段下设置。
1 2 | set $root_path '/opt/php/doc'; root $root_path; |
另外,提供一个调试类似错误的方法。
在nginx配置的http分段下加入这行
1 | log_format scripts '$document_root$fastcgi_script_name > $request'; |
然后在server分段下加入
1 | access_log /var/log/nginx/scripts.log scripts; |
这样,所有运行的脚本信息都会被记录在/var/log/nginx/scripts.log 这个文件下,打开看看有没有什么不对劲,就知道你出错在哪儿了。
近期评论