$_SERVER
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
$_SERVER — Информация о сервере и среде исполнения
Описание
Переменная $_SERVER — массив (array), который содержит информацию
о заголовках, путях и расположениях скриптов.
Записи в этом массиве создаются веб-сервером, поэтому нет гарантии, что каждый веб-сервер будет
предоставлять каждую из этих переменных; серверы иногда опускают отдельные переменные или предоставляют другие,
которые здесь не указали.
Однако большинство из этих переменных учтены в спецификации
» CGI/1.1 и, скорее всего, определятся.
Замечание:
При запуске PHP в командной строке
бо́льшая часть этих записей недоступна или не содержит никакого значения.
В дополнение к перечисленным ниже элементам PHP создаст дополнительные элементы
со значениями из заголовков запросов. Элементам присваивается название с префиксом HTTP_
,
за которым идёт название заголовка, написанное с заглавной буквы и с подчёркиванием вместо дефиса.
Например, заголовок Accept-Language
будет доступен как $_SERVER['HTTP_ACCEPT_LANGUAGE']
.
Индексы
- 'PHP_SELF'
-
Название файла скрипта, который выполняется в текущий момент, относительно
корня документов. Например, переменная $_SERVER['PHP_SELF'] в скрипте
по адресу http://example.com/foo/bar.php
примет значение /foo/bar.php.
Константа __FILE__
содержит полный путь и название файла текущего (то есть
подключённого) файла.
Переменная содержит название скрипта,
если PHP запустили в командной строке.
- 'argv'
-
Массив аргументов, которые передали скрипту. При запуске скрипта
в командой строке это даёт C-подобный доступ
к параметрам командной строки. При вызове через метод GET
этот массив содержит строку запроса.
- 'argc'
-
Содержит количество параметров, которые передали скрипту,
если скрипт запустили в командной строке.
- 'GATEWAY_INTERFACE'
-
Содержит используемую сервером версию спецификации CGI-интерфейса;
например
'CGI/1.1'
..
- 'SERVER_ADDR'
-
IP-адрес сервера, по которому выполняется текущий скрипт.
- 'SERVER_NAME'
-
Имя хоста, на котором выполняется текущий скрипт.
Переменная содержит имя, которое определили для виртуального хоста,
если скрипт выполняется на виртуальном хосте.
Замечание:
В Apache 2 потребуется установить директивы UseCanonicalName = On
и ServerName
,
иначе значение отразит имя хоста, которое предоставил
клиент и которое подделывают злоумышленники.
Небезопасно полагаться на это значение в контексте, который требует безопасности.
- 'SERVER_SOFTWARE'
-
Строка идентификации сервера, указанная в заголовках,
когда происходит ответ на запрос.
- 'SERVER_PROTOCOL'
-
Имя и версия информационного протокола, через который
запросили страницу; например
'HTTP/1.0'
;
- 'REQUEST_METHOD'
-
Метод, которым запросили страницу; например
'GET'
,
'HEAD'
, 'POST'
, 'PUT'
.
Замечание:
При запросе методом HEAD
PHP-скрипт завершается после отправки заголовков — после
любого вывода без буферизации вывода.
- 'REQUEST_TIME'
-
Метка времени начала запроса.
- 'REQUEST_TIME_FLOAT'
-
Метка времени начала запроса с точностью до микросекунд.
- 'QUERY_STRING'
-
Строка запроса, если адрес содержит такую, через которую получили доступ к странице.
- 'DOCUMENT_ROOT'
-
Директория корня документов, в которой выполняется текущий скрипт,
в точности та, которую указали в конфигурационном файле сервера.
- 'HTTPS'
-
Принимает непустое значение, если запрос выполнили через протокол HTTPS.
- 'REMOTE_ADDR'
-
IP-адрес, с которого пользователь просматривает текущую страницу.
- 'REMOTE_HOST'
-
Удалённый хост, с которого пользователь просматривает текущую
страницу. Обратный поиск DNS основан на значении переменной
REMOTE_ADDR.
Замечание:
Сервер потребуется настроить, чтобы создавать эту переменную.
Например, для веб-сервера Apache потребуется указать директиву
HostnameLookups On
в файле httpd.conf, чтобы эта
переменная создавалась. Смотрите также описание функции gethostbyaddr().
- 'REMOTE_PORT'
-
Порт на удалённой машине, на котором устанавливается соединение с сервером.
- 'REMOTE_USER'
-
Аутентифицированный пользователь.
- 'REDIRECT_REMOTE_USER'
-
Аутентифицированный пользователь, если запрос перенаправлен изнутри.
- 'SCRIPT_FILENAME'
-
Абсолютный путь к исполняемому скрипту.
Замечание:
Переменная $_SERVER['SCRIPT_FILENAME']
содержит относительный путь, который указал пользователь,
если скрипт запустили в командной строке (CLI)
по относительному пути наподобие file.php
или ../file.php.
- 'SERVER_ADMIN'
-
Значение директивы SERVER_ADMIN веб-сервера Apache,
которое указали в конфигурационном файле сервера. При запуске скрипта
на виртуальном хосте значение
определяется для этого виртуального хоста.
- 'SERVER_PORT'
-
Порт, на котором сервер принимает запросы.
При стандартной конфигурации сервера переменная содержит значение
'80'
;
для соединений по протоколу SSL, например, значение переменной соответствует
порту, который определили для защищённых HTTP-соединений.
Замечание:
На веб-сервере Apache 2 потребуется установить директивы
установить UseCanonicalName = On
и UseCanonicalPhysicalPort = On
, чтобы получить реальный физический порт,
иначе значение подделают и переменная не вернёт реальное значение физического порта.
В контекстах, которые требуют усиленной безопасности,
полагаться на это значение небезопасно.
- 'SERVER_SIGNATURE'
-
Строка, которая содержит версию сервера и имя виртуального хоста. Эта информация
добавляются на страницы, которые генерирует сервер, если в конфигурации сервера
включили директиву, которая отвечает за добавление такой строки.
- 'PATH_TRANSLATED'
-
Путь к текущему скрипту после выполнения сервером сопоставления virtual-to-real.
Путь строится на основе файловой системы, а не на основе корневого каталога сервера.
Замечание:
Пользователи Apache 2 включают директиву
AcceptPathInfo = On
в конфигурационном файле
httpd.conf, чтобы определить значение переменной PATH_INFO.
- 'SCRIPT_NAME'
-
Путь к текущему исполняемому скрипту. Переменная полезна на страницах,
которым требуется указывать на самих себя.
Полный путь и название текущего включаемого файла
содержит константа __FILE__.
- 'REQUEST_URI'
-
URI-идентификатор наподобие '
/index.html
',
который указали для доступа к странице.
- 'PHP_AUTH_DIGEST'
-
При HTTP-аутентификации по дайджесту переменной присваивается
значение заголовка 'Authorization', который отправил клиент и которое затем
проверяют.
- 'PHP_AUTH_USER'
-
При выполнении HTTP-аутентификации переменной присваивается
имя пользователя, которое предоставил пользователь.
- 'PHP_AUTH_PW'
-
При выполнении HTTP-аутентификации переменной присваивается
пароль, которое предоставил пользователь.
- 'AUTH_TYPE'
-
При выполнении HTTP-аутентификации переменной присваивается
тип аутентификации, который сервер устанавливает на основе клиентских данных.
- 'PATH_INFO'
-
Содержит информацию о пути, которую предоставил клиент. Значение идёт
после фактического названия скрипта, но до строки запроса, если строку запроса указали.
Переменная $_SERVER['PATH_INFO'] получит значение
/some/stuff
,
если текущий скрипт запросили по URL-адресу наподобие
http://www.example.com/php/path_info.php/some/stuff?foo=bar.
- 'ORIG_PATH_INFO'
-
Исходное значение переменной 'PATH_INFO' перед
обработкой PHP.
Примеры
Пример #1 Пример вывода значения переменной $_SERVER
<?php
echo $_SERVER['SERVER_NAME'];
?>
Вывод приведённого примера будет похож на:
Примечания
Замечание:
Это «суперглобальная»,
или автоматическая глобальная, переменная. Это просто означает, что она доступна во всех контекстах скрипта.
Нет необходимости выполнять global $variable; для доступа к ней внутри метода или функции.