PHP 中的 PATH_INFO 到底是什么?

发布于 2024-08-21 16:23:28 字数 189 浏览 4 评论 0原文

所有外部 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

九厘米的零° 2024-08-28 16:23:28

实际上,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

Apache 核心文档:AcceptPathInfo 指令< /a>


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 the AcceptPathInfo 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 file here.html. Then requests for /test/here.html/more and /test/nothere.html/more both collect /more as PATH_INFO.

Apache Core Documentation: AcceptPathInfo Directive

不可一世的女人 2024-08-28 16:23:28

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

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

<前><代码> PATH_INFO = "" | ( “/“ 小路 )
路径 = lsegment *( "/" lsegment )
lsegment = *lchar
lchar = <除“/”之外的任何 TEXT 或 CTL>

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 ;)

The PATH_INFO variable specifies a path to be interpreted by the CGI
script. It identifies the resource or sub-resource to be returned by
the CGI script, and is derived from the portion of the URI path
hierarchy following the part that identifies the script itself.
Unlike a URI path, the PATH_INFO is not URL-encoded, and cannot
contain path-segment parameters. A PATH_INFO of "/" represents a
single void path segment.

 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文