PHP 中究竟PATH_INFO是什么?

2022-08-30 13:06:15

所有外部 URL 看起来像 'module/action?key1=param1'。无法自定义 - 但它很快。不同之处在于,第一个使用PHP的GET,第二个使用PATH_INFO。

我见过几次,但仍然不知道它到底是什么。它有什么作用?PATH_INFO


答案 1

实际上,它与 Apache Web Server 服务 PHP 页面有关,而不是 PHP 本身。PATH_INFO

PATH_INFO是 Apache 在打开 AcceptPathInfo 指令时设置的环境变量。它将包含尾随路径名信息,该信息跟在实际文件名或现有目录中不存在的文件之后,无论请求是被接受还是被拒绝。然后,环境变量被传递到负责呈现页面的 Apache/CGI 模块。

该变量在 PHP 中可使用 访问。$_SERVER['PATH_INFO']

例如,假定该位置指向仅包含单个文件的目录。然后请求 和 两者都收集为 ./test/here.html/test/here.html/more/test/nothere.html/more/morePATH_INFO

Apache Core Documentation: AcceptPathInfo Directive


答案 2

由于变量PATH_INFO是CGI定义的一部分,因此您还应该看看那里;)

PATH_INFO变量指定要由 CGI 脚本解释的路径。它标识 CGI 脚本要返回的资源或子资源,并从标识脚本本身的部分后面的 URI 路径层次结构部分派生。与 URI 路径不同,PATH_INFO不是 URL 编码的,并且不能包含路径段参数。“/”PATH_INFO表示单个空隙路径段。

 PATH_INFO = "" | ( "/" path )
 path      = lsegment *( "/" lsegment )
 lsegment  = *lchar
 lchar     = <any TEXT or CTL except "/">

https://www.rfc-editor.org/rfc/rfc3875#section-4.1.5


推荐