$_SERVER[SCRIPT_URL]: когда он надежно присутствует?

В моей локальной среде (PHP 5.4.24 на Apache 2.2.26) $_SERVER["SCRIPT_URL"] присутствует, но я читал, что эта переменная не всегда присутствует, хотя я не мог точно определить, когда она есть, а когда нет.

Я хотел бы знать, что требуется для надежного присутствия этой переменной.


person clami219    schedule 26.06.2014    source источник


Ответы (2)


Он доступен только при включенном mod_rewrite:

http://httpd.apache.org/docs/2.0/rewrite/rewrite_intro.html#EnvVar

person Wolfgang Stengel    schedule 26.06.2014
comment
Нет, они есть даже без mod_rewrite, даже если вы не используете Apache. Не все используют Apache! - person Daniel W.; 26.06.2014
comment
Конечно, вы можете смоделировать поле с помощью другого программного обеспечения, но исходным источником является mod_rewrite. Я предполагаю, что вопрос в том, если код использует поле, в каком случае код перестанет работать. - person Wolfgang Stengel; 26.06.2014
comment
Вы оба правы, извините. Если вы нажмете кнопку редактирования, я изменю свой недальновидный отрицательный голос на что-то положительное. - person Daniel W.; 26.06.2014
comment
Казалось бы, есть что-то еще, что в конечном итоге может определить, установлены ли эти переменные среды. У меня есть три сервера Apache/mod_rewrite, но SCRIPT_URL и SCRIPT_URI установлены только на одном из них? - person MrWhite; 13.10.2016
comment
Глядя на новую ошибку в каком-то старом коде, кажется, что даже с включенным mod_rewrite у меня раньше был $_SERVER['SCRIPT_URL'] на сервере в прошлом году, а теперь нет! Пришлось переключиться на REQUEST_URI - person thinsoldier; 23.01.2018

Эта переменная сильно зависит от конфигурации сервера.

Например, при использовании nginx с php5-fpm (fcgi) вы должны передать переменную как fpm_parameter:

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;

Аналогичная конфигурация есть и для scgi.

В $_SERVER есть 3 типа глобальных переменных, некоторые берутся из заголовка запроса клиента и ненадежны, некоторые устанавливаются PHP/веб-сервером (например, REMOTE_ADDR) и очень надежны, а некоторые зависят от вашей конфигурации, которая может быть надежной в зависимости от этой конфигурации.

person Daniel W.    schedule 26.06.2014