$ document_root上的nginx和尾部斜杠?

时间:2010-03-23 09:19:43

标签: php nginx slash trailing

我对nginx使用以下配置:http://gist.github.com/340956

但是,此配置会导致PHP出现No input file specified错误。我能够解决它的唯一方法是改变这一行:

fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;

请注意$document_root$fastcgi_script_name之间的“/”。我被告知这是错误的配置,但没有人能够告诉我为什么我的配置需要这个额外的斜杠。

如何摆脱那些额外的斜线?

5 个答案:

答案 0 :(得分:4)

刚遇到同样的问题(在RHEL6服务器上的nginx + php-fpm的remi安装中),您可以通过在/ etc / nginx / fastcgi_params中添加以下行来解决它

fastcgi_param  SCRIPT_FILENAME    $request_filename;

我发现在RHEL中缺少这一行,而在一个完美工作的Debian nginx中。

答案 1 :(得分:1)

param PATH_TRANSLATED是否获得了正确的URI?我认为它是conf文件中不能计算的变量的直接连接。在它们之间添加斜杠时,可能会正确解释它们。

当您收到错误No input file specified时,请检查您的日志以查看请求的URI。

答案 2 :(得分:0)

删除第3行中的try_files $uri index.php$uri;

答案 3 :(得分:0)

偏好问题。只要你保持一致,无论哪种方式都可以。

在配置文件中添加斜杠,并确保文档根目录和脚本名称的末尾和开头没有额外的斜杠,反之亦然。

答案 4 :(得分:0)

当您明确添加如此的根指令时会发生什么:

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;
}