В чем разница между $_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, как это было в исходном запросе, прежде чем любая переписывание или другие манипуляции были сделаны с строкой.