1. 程式人生 > 其它 >Nginx訪問PHP檔案的File not found錯誤處理

Nginx訪問PHP檔案的File not found錯誤處理

這個錯誤很常見,原有有下面兩種幾種

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;