В чем разница между $ SERVER['PATH INFO'] и $ SERVER['ORIG PATH INFO']?
в чем разница между $_SERVER['PATH_INFO']
и $_SERVER['ORIG_PATH_INFO']
? Как их использовать?
когда я запускаю print_r($_SERVER)
, PATH_INFO
и ORIG_PATH_INFO
нет в массиве. Почему бы и нет? Как я могу их включить?
Я прочитал руководство PHP на них, но все еще не понимаю их.
4 ответов
на PATH_INFO
переменная присутствует только при вызове PHP-скрипта:
http://www.example.com/phpinfo.php/HELLO_THERE
только /HELLO_THERE
после .php
сценарий. Если вы не вызываете URL-адрес таким образом, не будет $_SERVER["PATH_INFO"]
переменные среды.
на PORIG_
префикс-это несколько необычно. PATH_INFO
является стандартной переменной CGI-environment и никогда не должен иметь префикса. Где ты это прочитал? (Были некоторые проблемы вокруг PHP3 / PHP4, если вы вызвали интерпретатор PHP через cgi-bin/ - но вряд ли у кого-то есть такие настройки сегодня.)
для справки:http://www.ietf.org/rfc/rfc3875
попробуйте это :
$path_info = !empty($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : (!empty($_SERVER['ORIG_PATH_INFO']) ? $_SERVER['ORIG_PATH_INFO'] : '');
PATH_INFO и ORIG_PATH_INFO используются редко. Они ссылаются на что-либо в пути запроса (часть URL-адреса от первого / on), который приходит после имени файла и строки запроса. Как правило, у вас не будет PATH_INFO в URL-адресе.
Я предполагаю, что вы имеете в виду ORIG_PATH_INFO, а не PORIG_PATH_INFO. Информация о пути может управляться такими вещами, как mod_rewrite и сами PHP-скрипты. ORIG_PATH_INFO-это PATH_INFO, как и в исходном запросе, перед любым переписывание или другие манипуляции были сделаны со строкой.
до 5.2.4, PATH_INFO
был видимо сломан (не установлен) в конфигурации по умолчанию. Пожалуй, это все.
https://bugs.php.net/bug.php?id=31892
руководство PHP говорит, что ORIG_PATH_INFO
- это:
исходная версия 'PATH_INFO' перед обработкой PHP.
Reference:
http://php.net/manual/en/reserved.variables.server.php