Nginx 访问 PHP 的 File not found 错误处理

对应在 nginx 的 error.log 里面错误信息为:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream

原因

总的来说问题分两种情况:

  • 找不到文件
  • 没权限

解决

找不到文件

脚本路径设置不对,导致 php-fpm 找不到 SCRIPT_FILENAME 里执行的 php 文件

将
fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
改成
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

权限问题

  1. DAC 层面
    脚本所属用户和用户组不对或者脚本权限设置不对

  1. MAC 层面
    开启了 SELinux
    vim /etc/selinux/config 关闭 SELinux,如下图:

    getenforce 可查看 SELinux 当前状态
    setenforce 0 临时且立即生效来关闭SELinux(宽容模式)

有时在工作中遇到“没权限”问题,我们设置了权限(DAC层面)后还是提示“没权限”,比如很多人郁闷的说“我去,我都设置777了,还不行?”,那就大概率是因为开启了SELinux(MAC层面)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。