Php $document\u root上的nginx和尾部斜杠?
我对nginx使用以下配置: 但是,此配置会导致PHP出现Php $document\u root上的nginx和尾部斜杠?,php,nginx,slash,trailing,Php,Nginx,Slash,Trailing,我对nginx使用以下配置: 但是,此配置会导致PHP出现未指定输入文件错误。我唯一能解决这个问题的方法就是改变这一行: fastcgi\u参数SCRIPT\u文件名$document\u root/$fastcgi\u SCRIPT\u name 注意$document\u root和$fastcgi\u script\u name之间的“/”。我被告知这是错误的配置,但没有人能够确切地告诉我为什么我的配置需要这个额外的斜杠 如何去掉多余的斜杠?删除尝试使用文件$uriindex.php$ur
未指定输入文件
错误。我唯一能解决这个问题的方法就是改变这一行:
fastcgi\u参数SCRIPT\u文件名$document\u root/$fastcgi\u SCRIPT\u name代码>
注意$document\u root
和$fastcgi\u script\u name
之间的“/”。我被告知这是错误的配置,但没有人能够确切地告诉我为什么我的配置需要这个额外的斜杠
如何去掉多余的斜杠?删除尝试使用文件$uriindex.php$uri代码>在第3行。优先事项。只要你始终如一,任何一种方式都可以
在配置文件中添加斜杠,并确保在文档根和脚本名称的末尾和开头分别没有其他斜杠,反之亦然。参数路径\u TRANSLATED
是否获得正确的URI?我认为这是conf文件中变量的直接连接,不会进行计算。在它们之间添加斜杠时,可能会正确地解释它们
当出现错误未指定输入文件时
,请检查日志以查看请求的URI。如果显式添加如下根指令,会发生什么情况:
location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(.*)$;
include fastcgi.conf;
root /var/www/my_webroot;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
同样的问题(在RHEL6服务器上的nginx+php fpm的remi安装中),您可以通过在/etc/nginx/fastcgi_参数中添加以下行来解决
fastcgi_param SCRIPT_FILENAME $request_filename;
我发现RHEL中缺少这一行,而Debian nginx却运行良好。然后我的重写中断了,因为我有像/foo/bar
这样的URL重定向到index.php/foo/bar
。我不买它。是否在$root中添加尾部斜杠似乎没有什么区别。当我收到未指定输入文件的错误时,应该检查什么日志?nginx日志没有显示任何内容,因为错误是由PHP触发的。在我的$\u服务器
转储中没有PATH\u TRANSLATED
。nginx记录的唯一内容是访问日志,它只显示了一个“404”任何使用重写的URL。这里的想法是找出请求的URI。我的$root
是在服务器{…}
中定义的,这还不够好吗?