Nginx的fastcgi_param SCRIPT_FILENAME的正确设置是什么?

在PHP FastCGI示例 & 陷阱和常见错误 ,据说它应该是:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

但在我的Ubuntu(/ etc / nginx / fastcgi_params)中,设置是:

 fastcgi_param SCRIPT_FILENAME $request_filename; 

我正在使用Ubuntu设置,没有任何问题。 什么是陷阱?

$request_filename只是写它的一个更好的方法。

$ REQUEST_FILENAME

这个variables等于当前请求的文件path,由指令root或别名和URI请求组成;

基本上,当涉及到SCRIPT_FILENAME时,您没有收到任何错误,因为在您的虚拟主机文件中定义了根指令时,它已经被定义。 所以,除非你使用fastcgi_param在你的虚拟主机文件中明确地定义它,否则SCRIPT_FILENAME的值将取自根指令。但是一个重要的要点在这里。 还有另外一个variables,nginx需要将请求发送到php服务器$fastcgi_script_name并且你必须定义它以避免重复的URL和uri以斜线结尾的错误。

结论

为了使所有的工作都非常好,每个人都应该在/ etc / nginx文件夹中的'fastcgi_params'文件中明确定义SCRIPT_FILENAME或者通过在php位置块中包含以下行来轻松地在站点的可用文件夹中定位你的站点的虚拟主机:

 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

或者像上面写的那样包含在'fastcgi_params'文件中,无论哪种方式都是一样的。

但最后,请小心,每个CMS的configuration都不相同 。因此,请在nginx中search适合您当前情况的最佳configuration。

我希望这将有助于任何人在未来,因为它花了我很多时间来弄清楚..