从外部配置文件中包含时 fastcgi_param SCRIPT_NAME 不起作用

从外部配置文件中包含时 fastcgi_param SCRIPT_NAME 不起作用

在我的服务器上升级 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 世界的新手。)

相关内容