我正在尝试在http://mydomain.com/blogtest主持wordpress安装,并且已按照http://wiki.nginx.org/WordPress的指南进行操作,但我仍然收到“未指定输入文件”。对于任何请求。
使用Nginx 1.2.1和PHP 5.3.6与php-fpm
这是Nginx配置文件:
upstream wptest {
server 127.0.0.1:9000;
}
server {
listen 80;
server_name mydomain.com;
access_log logs/access.log;
error_log logs/error.log;
location /blogtest {
access_log logs/blogtest.access.log;
error_log logs/blogtest.error.log;
root /opt/myblogwp;
index index.php;
try_files $uri $uri/ /blogtest/index.php;
}
location ~ \.php$ {
include /usr/local/nginx/conf/fastcgi_params;
fastcgi_split_path_info ^(/blogtest)(/.*)$;
fastcgi_intercept_errors on;
fastcgi_pass wptest;
}
}
这是我的fastcgi_params文件:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
# Next line added by AdamJT for php-fpm
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#Concrete5 fix by AdamJT
#fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
我还编辑了/usr/local/php/lib/php.ini来设置cgi.fix_pathinfo = 0;
答案 0 :(得分:3)
请注意,location /blogtest {}
表示您的文件将在
/opt/myblogwp/blogtest
这是你的wp网站的根目录吗?您可能需要使用alias
而不是location
。别名允许将root目录设置为/ opt / someotherdir /。
另外,我对fastcgi_split_path_info
并不熟悉,但似乎有些东西缺失了。
看一下这个例子:
Here's an example. The script show.php receives as argument the string article/0001. The following configuration will handle path splitting properly:
location ~ ^.+\.php {
(...)
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
(...)
}
Requesting /show.php/article/0001 sets SCRIPT_FILENAME to /path/to/php/show.php and PATH_INFO to /article/0001.
为您的示例 - 我没有看到您如何设置真正的PATH_INFO和SCRIPT_FILENAME - 您正在使用默认值...我想您必须稍微调整这些参数。您得到的错误是No input file specified
。这意味着没有将script_filename传递给PHP。所以你应该追踪并修复PATH_INFO和SCRIPT_FILENAME,这样你最终应该得到这样的东西:
/path/to/wpresssite/index.php$fastcgi_script_name