$_SERVER['PATH_INFO']
和$_SERVER['ORIG_PATH_INFO']
有什么区别?我如何使用它们?
当我运行print_r($_SERVER)
,PATH_INFO
和ORIG_PATH_INFO
不存在阵列中。为什么不?我如何启用它们?
我已阅读他们的PHP手册,但仍然不明白他们。
http://www.example.com/phpinfo.php/HELLO_THERE
这仅仅是.php
脚本后/HELLO_THERE
部分:
$_SERVER['PATH_INFO']
和$_SERVER['ORIG_PATH_INFO']
有什么区别?我如何使用它们?
当我运行print_r($_SERVER)
,PATH_INFO
和ORIG_PATH_INFO
不存在阵列中。为什么不?我如何启用它们?
我已阅读他们的PHP手册,但仍然不明白他们。
http://www.example.com/phpinfo.php/HELLO_THERE
这仅仅是.php
脚本后/HELLO_THERE
部分:
的PATH_INFO
变量,如果你调用一个PHP脚本,这样才存在。如果您不像这样调用URL,则不会有$_SERVER["PATH_INFO"]
环境变量。
PORIG_
前缀有些不常见。 PATH_INFO
是一个标准的CGI环境变量,永远不应该加前缀。你从哪里读到的? (有大约PHP3/PHP4一些问题,如果您通过调用PHP解释器的cgi-bin/- 但几乎没有人有这样的设置今天。)
PATH_INFO和ORIG_PATH_INFO很少使用。这些引用文件名称后面的请求路径(第一个/打开的URL部分)和查询字符串中的任何内容。通常,您在URL中不会有PATH_INFO。
我猜你的意思是ORIG_PATH_INFO,而不是PORIG_PATH_INFO。路径信息可能由mod_rewrite和PHP脚本本身操纵。在对字符串进行任何重写或其他操作之前,ORIG_PATH_INFO是原始请求中的PATH_INFO。
'PATH_INFO'在Symfony和ZF中都有使用,所以我不会称之为“很少使用” – Phil 2011-04-12 02:33:50
只是为了增加这一点,因为我需要使用PATH_INFO并且被PATH_INFO误导了,显然没有被使用许多。基于WordPress内部使用:https://github.com/WordPress/WordPress/blob/4.4.4/wp-includes/class-wp.php#L155。公平地说它被使用[非常多](http://www.opensourcecms。com/general/cms-marketshare.php),所以如果你需要使用它! – 2016-08-04 15:08:57
“...在文件名称和查询字符串之后。” - 请注意,PATH_INFO在查询字符串之前_before,而不是在它之后。 – MrWhite 2016-11-30 20:06:58
在5.2.4之前,PATH_INFO
在默认配置中显然已损坏(未设置)。也许就是这样。
https://bugs.php.net/bug.php?id=31892
PHP手册说,ORIG_PATH_INFO
是:
'PATH_INFO' 的原始版本由PHP之前处理。
试试这个:
$path_info = !empty($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : (!empty($_SERVER['ORIG_PATH_INFO']) ? $_SERVER['ORIG_PATH_INFO'] : '');
节省日程谢谢。 – 2014-07-16 19:00:10
我认为它的意思是'ORIG_PATH_INFO'。看起来有些服务器配置创建了这个,而不是'PATH_INFO'。 – Phil 2011-04-12 02:31:40
然后它肯定是一个CGI处理程序设置。在某些设置中,PHP会在SCRIPT_FILENAME上使用PATH_INFO,所以服务器可能配置为使用path_info的替代名称。 – mario 2011-04-12 02:38:06