#php #apache
#php #apache
Вопрос:
В чем разница между $_SERVER['PATH_INFO']
и $_SERVER['ORIG_PATH_INFO']
? Как мне их использовать?
Когда я запускаю print_r($_SERVER)
, PATH_INFO
и ORIG_PATH_INFO
отсутствуют в массиве. Почему бы и нет? Как я могу их включить?
Я прочитал руководство по PHP по ним, но все еще не понимаю их.
Ответ №1:
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 через c&i-bin/ — но вряд ли у кого-нибудь сегодня есть такие настройки.)
Для справки: http://www.ietf.or&/rfc/rfc3875
Комментарии:
1. Я думаю, так и должно быть
ORIG_PATH_INFO
. Кажется, некоторые конфигурации сервера создают это вместоPATH_INFO
.2. Тогда это, безусловно, настройка обработчика CGI. В некоторых настройках PHP будет использовать PATH_INFO вместо SCRIPT_FILENAME, поэтому сервер, вероятно, настроен на использование альтернативного имени для path_info.
3. php.net/manual/en/reserved.variables.server.php :
ORIG_PATH_INFO
: &&t; Исходная версия ‘PATH_INFO’ до обработки PHP.
Ответ №2:
попробуйте это :
$path_info = !empty($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : (!empty($_SERVER['ORIG_PATH_INFO']) ? $_SERVER['ORIG_PATH_INFO'] : '');
Ответ №3:
PATH_INFO и ORIG_PATH_INFO используются редко. Они ссылаются на что-либо в пути запроса (часть URL из первого / on), которая идет после имени файла и строки запроса. Как правило, у вас не будет PATH_INFO в URL.
Я предполагаю, что вы имеете в виду ORIG_PATH_INFO, а не PORIG_PATH_INFO. Информацией о пути могут управлять такие вещи, как mod_rewrite и сами PHP-скрипты. ORIG_PATH_INFO — это PATH_INFO в том виде, в каком он был в исходном запросе, до того, как со строкой были выполнены какие-либо перезаписи или другие манипуляции.
Комментарии:
1.
PATH_INFO
используется как в Symfony, так и в ZF, поэтому я бы не назвал его «редко используемым»2. Просто чтобы добавить к этому, что мне нужно было использовать,
PATH_INFO
и меня немного ввело в заблуждение то,PATH_INFO
что, по-видимому, они используются не так часто. На основе WordPress, использующего это внутренне: &ithub.com/WordPress/WordPress/blob/4.4.4/wp-includes /… . Справедливо будет сказать, что он используется очень часто , так что используйте его, если вам нужно!3. «… это следует после имени файла и строки запроса». — Обратите внимание, что PATH_INFO находится перед строкой запроса, а не после нее.
4.
ORIG_PATH_INFO
также используется в A&avi (A&aviWebRequest.class.php ).
Ответ №4:
До версии 5.2.4 PATH_INFO
, по-видимому, был сломан (не установлен) в конфигурации по умолчанию. Возможно, это все.
https://bu&s.php.net/bu&.php?id=31892
В руководстве по PHP говорится, что ORIG_PATH_INFO
это:
Оригинальная версия ‘PATH_INFO’ до обработки PHP.
Ссылка:
http://php.net/manual/en/reserved.variables.server.php