Nginx 訪問 PHP 的 File not found 錯誤處理

對應(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)限問題

  1. DAC 層面
    腳本所屬用戶和用戶組不對或者腳本權(quán)限設(shè)置不對

  1. 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層面)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容