我在Debian上配置了nginx stable(1.4.4)+ PHP(使用FastCGI,php-fpm).这工作正常:
location ~* ^/~(.+?)(/.*\.php)$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
alias /home/$1/public_html$2;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_index index.php;
autoindex on;
}
Run Code Online (Sandbox Code Playgroud)
我使用PATH_INFO变量,因此我将以下行添加到fastcgi_params:
fastcgi_param PATH_INFO $fastcgi_path_info;
Run Code Online (Sandbox Code Playgroud)
在/etc/php5/fpm/php.ini中:
cgi.fix_pathinfo = 0
Run Code Online (Sandbox Code Playgroud)
我认为这应该有效,但是当我打印出所有服务器变量时,PATH_INFO始终为空:
array (
'USER' => 'www-data',
'HOME' => '/var/www',
'FCGI_ROLE' => 'RESPONDER',
'QUERY_STRING' => '',
'REQUEST_METHOD' => 'GET',
'CONTENT_TYPE' => '',
'CONTENT_LENGTH' => '',
'SCRIPT_FILENAME' => '/usr/share/nginx/html/srv_var.php',
'SCRIPT_NAME' => '/srv_var.php',
'PATH_INFO' => '',
'REQUEST_URI' => '/srv_var.php',
'DOCUMENT_URI' => '/srv_var.php',
'DOCUMENT_ROOT' => '/usr/share/nginx/html',
'SERVER_PROTOCOL' => 'HTTP/1.1',
'GATEWAY_INTERFACE' => 'CGI/1.1',
'SERVER_SOFTWARE' …Run Code Online (Sandbox Code Playgroud)