2012-02-27 43 views
1

我正在建立一个运行nginx的新Ubuntu服务器,并且我试图在网站上运行一个小型的WordPress博客。我似乎无法得到这部分的配置,我仔细查看了所有可以找到的文档和在线帮助。nginx/PHP的配置问题

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

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

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

然而,作为进一步的测试,我把文件phpinfo.php的在/,然后改变帕拉姆线“fastcgi_param SCRIPT_FILENAME /phpinfo.php;”,而工作,如此看来,我的FastCGI进程正常运行,但出于某种原因,我没有在nginx中正确设置路径。

我已经仔细研究了这个问题的讨论,在http://blog.martinfjordvald.com/2011/01/no-input-file-specified-with-php-and-nginx/,我已经看过文件权限,据我所知,这一切都OK。/usr/local/www/data/blog树中的每个目录都具有执行权限,down上的/ usr/local/www中的所有内容均由运行nginx和FastCGI的www-data用户拥有并可读取。

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

谢谢。

回答

2

从配置中删除此

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

没有,根本指令追加/博客/位置的请求;请参阅http://wiki.nginx.org/HttpCoreModule#root。我最初有另一种方式(这是类似Apache的配置),但被纠正了。无论哪种方式,它都没有区别。 – user1235777 2012-02-27 15:42:44

+0

对不起;(只是我的第一个想法,我试了一下,如果我跳过fastcgi_split_path_info ^(/ blog)(/.*)$,就得到它的工作;否则我得到了拒绝访问 – Mattias 2012-02-27 16:01:27

+0

它可以是你的fastcgi_params ...文件 – Mattias 2012-02-27 16:03:15