對應(yīng)在 nginx 的 error.log 里面錯誤信息為:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
原因
總的來說問題分兩種情況:
- 找不到文件
- 沒權(quán)限
解決
找不到文件
腳本路徑設(shè)置不對,導(dǎo)致 php-fpm 找不到 SCRIPT_FILENAME 里執(zhí)行的 php 文件
將
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
改成
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
權(quán)限問題
- DAC 層面
腳本所屬用戶和用戶組不對或者腳本權(quán)限設(shè)置不對
- MAC 層面
開啟了 SELinux
vim /etc/selinux/config
關(guān)閉 SELinux箩艺,如下圖:
getenforce
可查看 SELinux 當(dāng)前狀態(tài)
setenforce 0
臨時且立即生效來關(guān)閉SELinux(寬容模式)
有時在工作中遇到“沒權(quán)限”問題,我們設(shè)置了權(quán)限(DAC層面)后還是提示“沒權(quán)限”诅蝶,比如很多人郁悶的說“我去艇拍,我都設(shè)置777了,還不行?”扫尖,那就大概率是因為開啟了SELinux(MAC層面)