nginx php_fastcgi yaf获取SERVER里的PATH_INFO

今天将一个在其他服务器上运行良好的项目部署到另外一个服务器上,跑不起来了.

debug后发现,$_SERVER[‘PATH_INFO’]为空.SERVER数组里没有PATH_INFO这个key.

出问题的服务器是nginx,正常的是apache.

问谷歌,得知,nginx要获取这个需要配置下.

将虚拟主机的配置修改如下就可以获取到了.

server {
listen 80;
server_name ifelsend.com;
root /ifelsend.com/www;
access_log off;
error_page 404 /404.html;
location /404.html {
root /ifelsend.com/www;
}
location /{
index index.html index.htm index.php;
if (-e $request_filename) {
break;
}
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}

location ~ .+\.php($|/) {
root /ifelsend.com/www;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /ifelsend.com/www/$fastcgi_script_name;
# fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
}

 

感谢楼上,
我发现我只要配置fastcgi的location ~ .*\.(php|php5)?$  改为你的location ~ .+\.php($|/)
就全解决了
下面是我的facgi param:
fastcgi_pass  127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
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;
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

 

解决方案转自: http://bbs.csdn.net/topics/390767830

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注