【问题标题】:nginx/PHP config problemsnginx/PHP 配置问题
【发布时间】:2012-03-17 01:53:59
【问题描述】:

我正在设置一个运行 nginx 的新 Ubuntu 服务器,并且我正在尝试在该站点上运行一个小型 WordPress 博客。我似乎无法正确配置这部分,我仔细查看了我能找到的所有文档和在线帮助。

我在 www.example.com/blog 上运行博客,我不关心任何更高的位置块,我只想为这一区域设置正确的配置。我正在尝试使用:

location /blog/ {
         root /usr/local/www/data;

         try_files $uri $uri/ index.php?$args;
         index index.php;
         location ~ \.php$ {
                  fastcgi_pass 127.0.0.1:9000;
                  fastcgi_index index.php;
                  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                  fastcgi_split_path_info ^(/blog)(/.*)$;
                  include fastcgi_params;
         }
}

我在 127.0.0.1:9000 上运行 php-cgi。

当我尝试访问 www.example.com/blog、blog/ 或 blog/index.php 时,我收到“未指定输入文件”错误。作为测试,我创建了一个 phpinfo.php 文件并将其放入 /usr/local/www/data/blog/,但这给出了相同的错误。

但是,作为进一步的测试,我将 phpinfo.php 文件放在 /,然后将 param 行更改为“fastcgi_param SCRIPT_FILENAME /phpinfo.php;”,并且 确实 工作,所以看来我的 FastCGI 进程正在正确运行,但由于某种原因,我没有在 nginx 中正确设置路径。

我仔细查看了http://blog.martinfjordvald.com/2011/01/no-input-file-specified-with-php-and-nginx/ 对这个问题的讨论,也查看了文件权限,据我所知,一切正常。 /usr/local/www/data/blog 树中的每个目录都具有执行权限,从 /usr/local/www 开始的所有内容都归运行 nginx 和 FastCGI 的 www-data 用户所有,并且对其可读。

日志对此没有帮助;即使我将级别设置为信息,我也没有在错误日志中得到任何信息。

谢谢。

【问题讨论】:

    标签: php nginx fastcgi


    【解决方案1】:

    从您的配置中删除它

    fastcgi_split_path_info ^(/blog)(/.*)$;
    

    【讨论】:

    • 不,根指令将 /blog/ 位置附加到请求中;见wiki.nginx.org/HttpCoreModule#root。我最初有这种方式(这是类似 Apache 的配置所做的),但已得到纠正。无论哪种方式,它都没有任何区别。
    • 对不起 ;(,这只是我的第一个想法,如果我跳过 fastcgi_split_path_info ^(/blog)(/.*)$,我尝试了它并让它工作;否则我访问被拒绝。
    • 这可能与您的 fastcgi_params... 文件有关
    • 啊哈!是的,删除 fastcgi_split_path_info 是诀窍!我知道我什至没有在一个版本中拥有它,但我一定已经尝试过它以及其他更改。那,并在 try_files 行中的 index.php 之前添加一个前导斜杠,一切正常。
    • 我不需要前导斜线,神秘的...顺便说一句,我将答案更改为对未来的访问者是正确的...所以请将其标记为正确 ;)
    猜你喜欢
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 2021-07-14
    相关资源
    最近更新 更多