這個錯誤很常見,原有有下面兩種幾種
1. php-fpm找不到SCRIPT_FILENAME里執行的php文件
2. php-fpm不能訪問所執行的php,也就是權限問題
第一種情況(一般情況下都是因為這個問題)
你的location php 里面添加當文件不存在時返回404而不是交給php-fpm進行處理,默認配置文件代碼如下:
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /script$fastcgi_script_name; include fastcgi_params; }
在你的配置文件中找到下面這段
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
替換成下面
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
然后重新加載nginx配置文件
systemctl restart nginx(/usr/local/nginx/sbin/nginx)
第二種情況
兩種解決方法:
第一種,就是把你root文件夾設為其他用戶允許
第二種,找到你的php-fpm的配置文件,找到下面這段,把apache替換成你要的用戶組
; RPM: apache Choosed to be able to access some dir as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache
------------------------------另一個網友的問題,其實問題一樣----
問題原因:
fastcgi_param SCRIPT_FILENAME scripts$fastcgi_script_name;
解決辦法:改成
fastcgi_param SCRIPT_FILENAME /Users/linchen/Sites$fastcgi_script_name;
其中,/Users/linchen/Sites 是網站的根目錄
最終內容如下:
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /Users/linchen/Sites$fastcgi_script_name; include fastcgi_params; fastcgi_intercept_errors on;