В чем разница между $ 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