如果在我的配置文件中设置,我看不出有什么不同
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
或者:
fastcgi_param SCRIPT_FILENAME $request_filename;
他们分别做什么?两者中的一个比另一个更好吗?
提前致谢。
如果在我的配置文件中设置,我看不出有什么不同
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
或者:
fastcgi_param SCRIPT_FILENAME $request_filename;
他们分别做什么?两者中的一个比另一个更好吗?
提前致谢。
这是文档所说的:
$request_filename
$document_root
$fastcgi_script_name
如此处所写,使用fastcgi_index或fastcgi_split_path_info时至少存在差异。也许还有更多……这就是我现在所知道的。
例子
您收到请求
/info/
并具有以下配置:SCRIPT_FILENAME
会等于/home/www/scripts/php/info/index.php
,但使用$request_filename
它只是/home/www/scripts/php/info/
.的配置也
fastcgi_split_path_info
很重要。请参阅此处以获得更多帮助: http: //nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_split_path_infoTLDR
我推荐
$request_filename
用于SCRIPT_FILENAME
.如果你使用
root
指令$document_root$fastcgi_script_name
等于$request_filename
。如果你使用
alias
指令$document_root$fastcgi_script_name
将返回错误的路径,因为$fastcgi_script_name
是 URL 的路径,而不是与 相关的路径$document_root
。例子
如果你有配置
要求
/api/testing.php
:$document_root$fastcgi_script_name
==/app/www//api/testing.php
$request_filename
==/app/www/testing.php
要求
/api/
:$document_root$fastcgi_script_name
==/app/www//api/index.php
$request_filename
==/app/www/index.php
如果你使用,你应该使用指令
$request_filename
设置索引,这是行不通的。index
fastcgi_index
我猜这些行取自“fastcgi_params”文件。
基本上你不会收到任何错误,
SCRIPT_FILENAME
因为当你在你的 vhost 文件中定义你的 root 指令时它已经被定义了。fastcgi_param
因此,除非您使用的值在您的 vhost 文件中明确定义它,否则SCRIPT_FILENAME
将从 root 指令中获取。但是这里有一点很重要。为了将请求发送到 php 服务器,nginx 需要另一个变量,$fastcgi_script_name
您必须很好地定义它,以避免重复的 URL 和以斜线结尾的 uri 错误。结论:
为了让一切都运行得非常好,每个人都应该
SCRIPT_FILENAME
在位于 /etc/nginx 文件夹中的“fastcgi_params”文件中明确定义,或者通过在 php 位置块中包含以下行,轻松地在位于 sites-available 文件夹中的站点虚拟主机中明确定义:或包含在您上面写的“fastcgi_params”文件中,无论哪种方式都是一样的。有关将 ngnix 连接到 PHP-FPM 的更多信息,请访问:
https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/
我希望它能对未来的任何人有所帮助,因为我花了很多时间才弄明白……