В чем разница между $ _SERVER и $ _SERVER ?

В чем разница между $_SERVER['PATH_INFO'] и $_SERVER['ORIG_PATH_INFO'] ? Как их использовать?

Когда я запускаю print_r($_SERVER) , PATH_INFO и ORIG_PATH_INFO не присутствуют в массиве. Почему нет? Как я могу включить их?

Я прочитал руководство по PHP на них, но все еще не понимаю их.

Переменная PATH_INFO присутствует только в том случае, если вы вызываете скрипт PHP следующим образом:

 http://www.example.com/phpinfo.php/HELLO_THERE 

Это только часть /HELLO_THERE после скрипта .php . Если вы не вызываете такой URL, не будет переменной среды $_SERVER["PATH_INFO"] .

Префикс PORIG_ несколько необычен. PATH_INFO – это стандартная переменная среды CGI и никогда не должна быть префиксом. Где вы это читали? (Были некоторые проблемы вокруг 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'] : ''); 

До 5.2.4 PATH_INFO видимому, был поврежден (не установлен) в конфигурации по умолчанию. Возможно, все.

https://bugs.php.net/bug.php?id=31892

В руководстве по PHP говорится, что ORIG_PATH_INFO :

Оригинальная версия «PATH_INFO» перед обработкой PHP.

Справка:
http://php.net/manual/en/reserved.variables.server.php

PATH_INFO и ORIG_PATH_INFO редко используются. Они ссылаются на что-либо в пути запроса (часть URL-адреса от первого / на), который приходит после имени файла, и строку запроса. Как правило, у вас не будет PATH_INFO в URL-адресе.

Я предполагаю, что вы имеете в виду ORIG_PATH_INFO, а не PORIG_PATH_INFO. Информация о пути может управляться такими вещами, как mod_rewrite и скрипты PHP. ORIG_PATH_INFO – это PATH_INFO, как это было в исходном запросе, прежде чем любая переписывание или другие манипуляции были сделаны с строкой.