对应在 nginx 的 error.log 里面错误信息为:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
原因
总的来说问题分两种情况:
- 找不到文件
- 没权限
解决
找不到文件
脚本路径设置不对,导致 php-fpm 找不到 SCRIPT_FILENAME 里执行的 php 文件
将
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
改成
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
权限问题
- DAC 层面
脚本所属用户和用户组不对或者脚本权限设置不对
- MAC 层面
开启了 SELinux
vim /etc/selinux/config
关闭 SELinux,如下图:
getenforce
可查看 SELinux 当前状态
setenforce 0
临时且立即生效来关闭SELinux(宽容模式)
有时在工作中遇到“没权限”问题,我们设置了权限(DAC层面)后还是提示“没权限”,比如很多人郁闷的说“我去,我都设置777了,还不行?”,那就大概率是因为开启了SELinux(MAC层面)