今天重啟了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 應該都包含進去了。