在我的服务器上升级 nginx 后,所有 PHP 站点都停止工作。之前,我在文件“fastcgi_params”中只有以下内容:
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
然后 PHP 站点配置文件里面有一个像这样的块:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
但是,这不再起作用了。只有当我在每个站点的配置文件中有以下内容时,它才有效:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
我必须在这里设置 SCRIPT_FILENAME,而不是在“fastcgi_params”中。现在它前面还必须有 $document_root。如果在包含的 fastcgi_params 文件中设置,“$document_root$fastcgi_script_name”和“$fastcgi_script_name”都不起作用。
我并不担心现在必须在其前面添加 $document_root(但我很好奇,是否有人知道为什么它会损坏或者为什么它之前可以工作),但是为了简单起见,我更愿意将常用功能保留在 fastcgi_params 文件中,所以我想知道为什么它不起作用。
答案1
我猜你的配置可能是一系列错误的操作,所以我建议你阅读一下:http://blog.martinfjordvald.com/2010/07/nginx-primer/
简而言之,您可以(并且应该)将其放入fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
您的 fastcgi_params(或者只包含 fastcgi.conf 文件),但由于 nginx 如何在级别之间继承配置值,您需要确保您的根指令是在服务器块中定义,而不是在位置 / 中。
总的来说这是非常好的建议,将尽可能多的内容放在最上层,这样就可以避免大量的重复。
答案2
在最新升级到0.8.53-0ppa5~lucid我的版本launchpad.net/~nginx/+archive/stableppa 版本的 nginx。我运行的是 10.04 LTS x64。当我从上述 ppa repo 自动升级 nginx 时,这个问题出现在我所有的 Ubuntu 10.04 LTS 服务器和 VPS 上。 https://launchpad.net/~nginx/+archive/stable
我暂时通过将 Ubuntu 10.04 LTS Canonical 打包 repo 版本降级到 7.65 来修复这个问题。 http://packages.ubuntu.com/lucid/nginx
我已经尝试了受影响参数的许多排列 ->$script_filename,没有运气。
奇怪的是,我认为这与他们添加了一行用于定义 $SCRIPT_FILENAME 内部有关fastcgi_params。
- 错误修复:将 SCRIPT_FILENAME 添加到 fastcgi_params
(从https://launchpad.net/~nginx/+archive/stable/+packages,单击 lucid 包以查看带有上述行的变更日志)它似乎没有任何效果;我放弃了,并降级以保存我的生产 PHP 站点。
我想知道是否有人可以从另一个角度看待这个问题。
如果您也受到此影响,请投票。
我不确定在 Launchpad 中标记为稳定的 ppa 存储库有什么样的 QA。(我是 Launchpad 世界的新手。)