ThinkPHP的PATH_INFO模式通过Web服务器将入口文件后虚拟路径存入$_SERVER['PATH_INFO'],框架据此解析模块、控制器和操作方法;需配置'url_model'=>1,依赖Nginx/Apache正确传递PATH_INFO,且保留index.php入口。

ThinkPHP 的 PATH_INFO 模式是一种 URL 解析方式,它把请求路径中 入口文件之后的部分(如 /index/user/list)提取出来,存入 PHP 的 $_SERVER['PATH_INFO'] 变量,框架再据此解析模块、控制器和操作方法。
它不是真实文件路径
比如访问 https://site.com/index.php/admin/user/edit/123,服务器上并不存在 /admin/user/edit/123 这个目录或文件。Nginx 或 Apache 会把 /admin/user/edit/123 这段“虚拟路径”识别为 PATH_INFO,并透传给 PHP 脚本。此时:
-
$_SERVER['SCRIPT_NAME']是/index.php -
$_SERVER['PATH_INFO']是/admin/user/edit/123 -
$_GET仍可接收查询参数,如?id=456
它和 ThinkPHP 的 URL_MODEL 设置直接相关
在配置中设 'url_model' => 1 即启用 PATH_INFO 模式,对应典型 URL 格式:
-
index.php/模块/控制器/操作(如index.php/index/user/login) -
index.php/路由地址(如index.php/api/v1/users)
注意:ThinkPHP 8 默认不启用该模式,url_pathinfo 配置项默认为 false;只有显式开启或对接老系统时才需要它。
它依赖服务器环境支持
PATH_INFO 不是 PHP 自动产生的,必须由 Web 服务器(如 Nginx)主动提取并注入:
- PHP 层需开启
cgi.fix_pathinfo = 1(虽非绝对必要,但兼容性更稳) - Nginx 必须用
fastcgi_split_path_info正确拆分 URI,并设置PATH_INFO和SCRIPT_FILENAME -
root必须指向public/目录,否则自动加载失败且无提示
它和重写模式(URL_MODEL=2)的区别
PATH_INFO 模式保留 index.php 入口;而重写模式通过 try_files + rewrite 把 /user/list 内部重定向到 /index.php/user/list,对外隐藏入口文件——后者无需 PATH_INFO,也更推荐用于新项目。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











