錯誤原因
不少小夥伴在搭建好 LNMP 環境後,進行測試時,在測試頁會出現 File not found.
的提示資訊。檢視錯誤日誌報告顯示 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
這樣的錯誤資訊。之所以出現這樣的情況,是因為 Nginx
將請求 uri
轉發給 FastCGI
處理時, FastCGI
並沒有接收到相應的 uri
引數。出現這樣的錯誤大致分為以下三種。
採用預設配置資訊
在安裝好 Nginx
並配置好根目錄之後,採用了預設的 SCRIPT_FILENAME
配置引數,這樣的話 FastCGI
無法定位到正確目錄解析 php
檔案。
預設配置
location ~ \.php$ {
root /home/web;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
改為
location ~ \.php$ {
root /home/web;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
$document_root
表示 root
指定的目錄,針對 /home/web
目錄下的 php
檔案進行解析。
根目錄配置錯誤
如果你的根目錄地址是 /home/web
,實際配置成 /home/www
,也會出現同意的錯誤資訊,將錯誤地址改回正確地址即可。
Nginx
使用者與 Php-fpm
使用者不一致
如果以上配置都為正確的情況下,將 nginx.conf
中的 user
使用者配置與 www.conf
使用者配置設定為統一的使用者與使用者組。
在 nginx.conf
中
http {
user nginx nginx;
worker_processes 8;
...
}
在 Php-fpm
的 www.conf
中
user = nginx
group = nginx
如果沒有 nginx
使用者,建立這個使用者
useradd nginx
本作品採用《CC 協議》,轉載必須註明作者和本文連結