现在, 脚本路径已经交由PHP自己处理了. 那怎么增加PATH_INFO呢?
方案一:php内置解析
我们需要打开PHP中cgi.fix_pathinfo配置项, 打开这个配置项以后, PHP会去根据CGI规范来检查SCRIPT_FILENAME中那部分是访问脚本和PATH_INFO(ini配置解释), 并根据SCRIPT_NAME来修改PATH_INFO(和PATH_TRANSLATED)为正确的值然后, 就只要添加一个FASTCGI_PARAM项就好了:
location ~ .php {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
注意:php.ini默认是开启的fix_pathinfo=1 会导致一个非常严重的《nginx文件类型错误解析漏洞》bug,服务器配置过程中一定要关闭fix_pathinfo
方案二:nginx正则解析
上面的解决方法把对路径的分析交给了PHP去处理具有严重bug,最安全的还是由Nginx来分析路径(摒弃掉fix_pathinfo),两种配置方案
#配置方案 使用nginx模块fastcgi_split_path_info(nginx版本>0.7.31)
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#先加载默认后解析赋值
include fastcgi_params;
#正则解析路径
fastcgi_split_path_i