Pathinfo是一种URL模式,允许通过类似/index.php/controller/action
的形式传递参数。在Nginx中默认不开启Pathinfo支持,需要手动配置。
打开Nginx的站点配置文件(通常在/etc/nginx/sites-available/
或/etc/nginx/conf.d/
目录下)
找到处理PHP的location块,修改为以下配置:
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 根据实际PHP版本修改
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
# 添加以下Pathinfo支持配置
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
}
location ~ \.php(/|$) {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
# Pathinfo支持
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
}
location ~ \.php {
try_files $uri =404;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
sudo nginx -t
sudo systemctl restart nginx
cgi.fix_pathinfo
设置为1(在php.ini中):cgi.fix_pathinfo=1
出于安全考虑,建议限制Pathinfo的使用范围,只对特定目录或文件启用。
不同PHP版本可能需要调整fastcgi_pass的路径,请根据实际情况修改。
如果使用Docker或其他容器环境,配置方式可能有所不同。