PHP 中的 PATH_INFO 到底是什么?
所有外部 URL 均类似于“module/action?key1=param1”。无法进行定制——但速度很快。 区别在于第一个使用 PHP 的 GET,第二个使用 PATH_INFO。
我已经多次看到PATH_INFO
,但仍然不知道它到底是什么。它有什么作用?
all external URLs look like 'module/action?key1=param1'. No customization possible--but it's fast.
The difference is that the first uses PHP's GET, and the second uses PATH_INFO.
I've seen PATH_INFO
several times, but still don't know what exactly it is. What does it do?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
实际上,
PATH_INFO
与服务 PHP 页面的 Apache Web 服务器相关,而不是 PHP 本身。PATH_INFO
是 Apache 在 时设置的环境变量AcceptPathInfo
指令 已打开。它将包含跟随实际文件名或现有目录中不存在的文件的尾随路径名信息,无论请求被接受还是拒绝。然后环境变量被传递到负责渲染页面的 Apache/CGI 模块。在 PHP 中可以使用
$_SERVER['PATH_INFO']
访问该变量。例如,假设位置
/test/
指向仅包含单个文件here.html
的目录。然后对/test/here.html/more
和/test/nothere.html/more
的请求都会将/more
收集为PATH_INFO
。Actually,
PATH_INFO
is related to the Apache Web Server serving PHP pages and not PHP per se.PATH_INFO
is an environment variable set by Apache when theAcceptPathInfo
directive is turned on. It will contain trailing pathname information that follows an actual filename or non-existent file in an existing directory, whether the request is accepted or rejected. Environment variables are then passed on to the Apache/CGI module in charge of rendering the page.The variable is accessible in PHP using
$_SERVER['PATH_INFO']
.For example, assume the location
/test/
points to a directory that contains only the single filehere.html
. Then requests for/test/here.html/more
and/test/nothere.html/more
both collect/more
asPATH_INFO
.由于变量 PATH_INFO 是 CGI 定义的一部分,因此您也应该看看那里;)
https://www.rfc-editor.org/rfc/rfc3875#section -4.1.5
As the variable PATH_INFO is part of the definition for CGI you should also take a look in there ;)
https://www.rfc-editor.org/rfc/rfc3875#section-4.1.5