Nginx/FPM/PHP 所有 php 文件都显示“未找到文件”。

Nginx/FPM/PHP 所有 php 文件都显示“未找到文件”。

我刚刚在 centos 5.8 final 64 位机器上安装了 nginx 1.1.13 和 php 5.4.0。Nginx 和 PHP/Fpm 正在运行,我可以通过 ssh 命令行运行 php 脚本,但在浏览器中,我的所有 PHP 文件都不断出现“文件未找到”错误。

以下是我的 nginx.conf 处理 PHP 脚本的方式:

      location ~ \.php$
      {
              root                    /opt/nginx/html;
              fastcgi_pass            unix:/tmp/fpm.sock;
              fastcgi_index           index.php;
              fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
              include                 fastcgi_params;
      }

这是从我的其他服务器直接复制/粘贴的,在该设置下它可以正常工作(但它们运行的​​是旧版本的 php/fpm)。

为什么我会收到这些错误?

答案1

在所有“fastcgi_params *”行之前放置“include fastcgi_params;”,“include fastcgi_params;”将覆盖所有“fastcgi_param *”行(参见 nginx 调试日志):

location ~ \.php$ {
    root                    /opt/nginx/html;
    fastcgi_pass            unix:/tmp/fpm.sock;
    fastcgi_index           index.php;
    include                 fastcgi_params;
    fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
}

答案2

我遇到过同样的问题。

为了解决这个问题,我检查了运行 nginx、php-fpm 的用户,并检查了他们访问根目录所在文件夹的权限。默认是“www-data”。

ps aux | grep php-fpm但您可以使用和命令来找出答案ps aux | grep nginx

您必须确保运行这些进程的用户可以访问该文件夹。

答案3

我遇到了同样的问题,对我来说,这是 nginx 服务器配置中的错误配置/不存在的“root”指令

答案4

我通过更改用户和组来解决这个问题,尽管当前用户:php-fpm.d/www.conf 中的组

默认情况下,用户和组是“nginx”,更改此...

希望这可以帮助

相关内容