我刚刚在 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”,更改此...
希望这可以帮助