解決nginx FastCGI sent in stderr: “Primary script unknown”


今天重啟了mac,突然發現本地的 lnmp 服務不能用了,什么請求都返回了:

FastCGI sent in stderr: “Primary script unknown”

 這個就很尷尬了,可是我啥也沒動啊,但是沒有辦法,出問題了就得查,google了一下,出這個問題一般有兩個原因:

  • 一是nginx的配置文件問題


     即 /usr/local/etc/nginx/nginx.conf (個人的,你們的路徑不一定是這個)中的 fastcgi_param 參數配置問題,nginx默認配置為:
fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

   但是,如果你在nginx.conf 中設置了設置你本地的 root 目錄(服務根目錄),例如:

 root           /var/www/console/frontend/www/;

   那么需要將 fastcgi_param 參數修改為:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

   配置完成后,嘗試重啟 nginx 和 php-fpm, 看下服務是否恢復了,如果沒有恢復,請接着往下看:

 

  • 第二個原因是:php-fpm.conf 中設置了錯誤的用戶和組別

  默認的php-fpm.conf 中會 include 這個一個文件夾(可能會不同):

include=/usr/local/etc/php/7.1/php-fpm.d/*.conf

   意思是把 php-fpm.d 文件夾下面的所有 .conf 結尾的文件都 include 進來,一般情況下,會在這些 .conf 文件中配置 user/group 

  進行到這里,你可以執行一下下面這條命令,看下你目前的 php-fpm 是用什么身份運行的:

ps aux | grep -v root | grep php-fpm | cut -d\  -f1 | sort | uniq

   特別的,在OS X 系統下,用戶應該是  :

user = [your username]
group = staff

   如果發現用戶不對,比如,你的身份是 admin ,但是上面命令的執行結果卻是 nobody,那么你需要將 php-fpm.d 文件夾(或者其他文件夾,或者直接在 php-fpm.conf 中進行設置,視個人情況而定)下的 user 修改為你當前的身份,同樣的,修改完成后重啟 nginx 和 php-fpm 看下是否正常

如果還是不正常,那么請參考下其他的解決方案,不過大部分情況,上面兩種case 應該都包含進去了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM