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;
上一篇:Nmap


下一篇:<script>标签在html页面放置位置