Предопределенные переменные
Любому запускаемому скрипту PHP предоставляет большое количество
предопределенных переменных. Однако, многие из этих переменных не
могут быть полностью задокументированы, поскольку они зависят от
запущенного сервера, его версии и настроек, а также других факторов.
Некоторые из этих переменных не доступны, когда PHP запущен из
еменные командной строки.
Перечень этих переменных смотрите в разделе
Зарезервированные
предопределенные переменные.
Внимание
Начиная с PHP 4.2.0, значение директивы register_globals по умолчанию
установлено в off (отключено). Это большое изменение
в PHP. Положение register_globals в off делает
предопределенные переменные доступными в глобальной области видимости.
Например, чтобы получить DOCUMENT_ROOT, вам необходимо
будет использовать $_SERVER['DOCUMENT_ROOT'] вместо
$DOCUMENT_ROOT, или $_GET['id'] из
URL http://www.example.com/test.php?id=3 вместо
$id, или $_ENV['HOME'] вместо
$HOME.
Дополнительную информацию, связанную с этим изменением, вы можете
получить, прочитав описание
register_globals в разделе о
настройках, главу о безопасности
Использование Register Globals
, а также сообщения о выпусках PHP » 4.1.0
и » 4.2.0.
Использование доступных зарезервированных предопределенных переменных
PHP, таких как
суперглобальные массивы,
является предпочтительным.
Начиная с версии 4.1.0, PHP предоставляет дополнительный набор
предопределенных массивов, содержащих переменные web-сервера (если
они доступны), окружения и пользовательского ввода. Эти новые
массивы являются особыми, поскольку они автоматически глобальны--то
есть, автоматически доступны в любой области видимости. По этой
причине они также известны как 'автоглобальные' или 'суперглобальные'
переменные. (В PHP нет механизма определяемых пользователем
суперглобальных переменных.) Суперглобальные переменные перечислены
ниже; однако, перечисление их содержимого и дальнейшее обсуждение
предопределенных переменных PHP и их сути смотрите в разделе
Зарезервированные
предопределенные переменные. Также вы заметите, что старые
предопределенные переменные ($HTTP_*_VARS) всё
еще существуют.
Начиная с PHP 5.0.0, длинные
предопределенные переменные
массивов PHP могут быть отключены директивой
register_long_arrays.
Замечание:
Переменные переменных
Суперглобальные переменные не могут быть
переменными переменных.
Если некоторые из переменных в variables_order не установлены,
соответствующие им предопределенные массивы также останутся пустыми.