$_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