当路径和权限都没有问题时,如何修复 nginx‘无输入文件’?

当路径和权限都没有问题时,如何修复 nginx‘无输入文件’?

我知道这是一个常见的问题,但是我发现没有与我的情况完全匹配的讨论。

nginx 错误日志显示:

FastCGI 在 stderr 中发送:“无法打开主脚本:/usr/share/nginx/drupal7/index.php

但:

  1. 此路径是正确的,这是我的网站的根目录

  2. www-data有权访问它(如果我有,su www-data那么cat /usr/share/nginx/drupal7/index.php文件就会显示出来)。

  3. nginx root 和fpm/pool.d/myserver.confchroot 都指向同一个文件夹:/usr/share/nginx/drupal7

  4. www-data用户和组有权660访问同一文件夹pool.d/myserver.conf

  5. ps -u www-data显示它拥有 nginx 和 php5-fpm 进程

  6. 我没有安装 SElinux(有些讨论说这可能是问题所在)

那么为什么www-data用户可以访问我的index.php,但不能访问 FastCGI?为什么 FastCGI 尝试了正确的路径,但后来却说它不存在?

答案1

您已设置 chroot。当进程处于 chroot 状态时,从根目录到脚本的路径如下:

/index.php

因此,您需要修改 FastCGI 脚本调用所使用的路径,以便它们不包含脚本文件的完整目录路径。

相关内容