FastCGI sent in stderr: "Primary script unknown"
解決完 nginx worker_connections are not enough 後,我依舊要解決問題。這次是在 php 檔案只出現 File not found 字樣,但檔案明明就有。排查 Log 以後,發現以下錯誤:
[error] 18762#0: *12 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /phpinfo.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "127.0.0.1", referrer: "http://127.0.0.1/"
去 Server Fault 以後,發現可以在 Log 宣告變數:
log_format scripts '$document_root$fastcgi_script_name > $request' #請放在 http 區塊
這個意思是,建立一種紀錄模式稱為 scripts
,裡面會紀錄 $document_root
$fastcgi_script_name
$request
三個變數,以及 >
符號。接著在 nginx.conf 的 server
區塊寫下:
access_log /my/logs/path.log scripts; #/my/logs/path.log 要修改為 nginx 可執行的路徑
他會在 /my/logs/path.log
的檔案內,紀錄先前寫好的 scripts
模式。接著去 /my/logs/path.log
裡查查看:
/usr/local/Cellar/nginx/1.13.12/html/phpinfo.php > GET /phpinfo.php HTTP/1.1
明顯不對。要去設定。我想是 Document Root 的問題吧。那就去 nginx.conf 的 server
區塊設定:
root /Users/my/project;
重啟後成功,收工!