$_SERVER

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_SERVERІнформація про серверне та виконавче середовище

Опис

Змінна $_SERVER — це масив, що містить таку інформацію як заголовки, шляхи та розташування скриптів. Записи в цьому масиві створює вебсервер. Немає гарантії, що кожен вебсервер буде надавати всі ці записи; Деякі дані може бути опущено або надано інші, незазначені в списку, який наведено нижче. Тим не менш, більша частина цих даних описані в » специфікації CGI/1.1 і, ймовірно, будуть визначені.

Зауваження: Під час виконання PHP в командному рядку більшість з цих записів не доступні або мають інше значення.

Разом з елементами, описаними нижче, PHP створює додаткові елементи зі значеннями заголовків запиту. Ці елементи матимуть ключі з назвою, що складається з HTTP_ та назви заголовка великими буквами та підкресленнями замість дефісів. Наприклад, заголовок Accept-Language буде доступний як $_SERVER['HTTP_ACCEPT_LANGUAGE'].

Індекси

"PHP_SELF"
Шлях до файлу, де запущено скрипт, відносно кореневої теки вебсервера (document root). Наприклад, $_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".

Зауваження:

Скрипт PHP завершує роботу після надсилання заголовків (тобто, після здійснення будь-якого виводу без його буферизації) якщо метод запиту був HEAD.

"REQUEST_TIME"
Мітка часу, коли почався запит.
"REQUEST_TIME_FLOAT"
Мітка часу, коли почався запит, з точністю до мікросекунд.
"QUERY_STRING"
Рядок запиту, якщо він є, через який доступились до сторінки.
"DOCUMENT_ROOT"
Коренева директорія документів (document root), в якій скрипт виконується; вона визначається в конфігураційному файлі вебсервера.
"HTTPS"
Має непорожнє значення, якщо скрипт було запитано через протокол HTTPS.
"REMOTE_ADDR"
IP-адреса, з якої користувач переглядає поточну сторінку.
"REMOTE_HOST"
Назва хоста, з якого користувач переглядає поточну сторінку. Зворотній пошук DNS базується на REMOTE_ADDR користувача.

Зауваження: Вебсервер необхідно сконфігурувати, так щоб створювалася ця змінна. Наприклад, в Apache у файлі httpd.conf потрібна опція HostnameLookups On. Див. також gethostbyaddr().

"REMOTE_PORT"
Порт, який було використано на комп'ютері користувача для зв'язку з вебсервером.
"REMOTE_USER"
Ім'я авторизованого користувача.
"REDIRECT_REMOTE_USER"
Ім'я авторизованого користувача, якщо запит має внутрішню переадресацію.
"SCRIPT_FILENAME"

Абсолютний шлях до поточного скрипта, що виконується.

Зауваження:

Якщо скрипт виконується через CLI з використанням відносного шляху, як от file.php чи ../file.php, $_SERVER['SCRIPT_FILENAME'] буде містити цей відносний шлях, визначений користувачем.

"SERVER_ADMIN"
Значення, що встановлено для директиви SERVER_ADMIN (для Apache) в конфігураційному файлі вебсервера. Якщо скрипт запущено на віртуальному хості, SERVER_ADMIN матиме значення, визначене для даного віртуального хоста.
"SERVER_PORT"
Порт сервера, який використовується вебсервером для зв'язку. Початково, встановлюється значення "80". Але використовуючи, наприклад, SSL, це значення буде тим, що вказано в конфігураційному файлі для з'єднання через безпечний HTTP-порт.

Зауваження: Для того, щоб отримати фізичний (реальний) порт на Apache 2, необхідно встановити UseCanonicalName = On і UseCanonicalPhysicalPort = On. В іншому випадку це значення може підмінятись, а тому не буде повертатись значення фізичного порту. Покладатися на це значення в контексті безпеки — небезпечно.

"SERVER_SIGNATURE"
Рядок, що містить версію вебсервера та назву віртуального хоста, які додаються до сторінок, якщо на вебсервері ця функціональність підключена.
"PATH_TRANSLATED"
Шлях, що базується на файловій системі (а не на шляху до кореневої теки документів), який веде до поточного скрипта. PATH_TRANSLATED матиме значення, якщо створено зіставлення між назвою віртуального хоста та реальним шляхом до його теки.

Зауваження: Користувачі Apache 2 можуть використовувати AcceptPathInfo = On у файлі httpd.conf, щоб визначити PATH_INFO.

"SCRIPT_NAME"
Містить шлях до поточного скрипта. Це є корисним для сторінок, які повинні посилатись на самих себе. Константа __FILE__ містить повний шлях та назву поточного файлу.
"REQUEST_URI"
URI, який передається для доступу до поточного скрипта. Наприклад, "/index.html".
"PHP_AUTH_DIGEST"
Під час виконання автентифікації Digest HTTP, цій змінній передається значення заголовка "Authorization" (яке потім використовується для відповідної перевірки), що присилає клієнт.
"PHP_AUTH_USER"
Під час HTTP-автентифікації цій змінній передається ім'я користувача.
"PHP_AUTH_PW"
Під час HTTP-автентифікації цій змінній передається пароль користувача.
"AUTH_TYPE"
Під час HTTP-автентифікації, цій змінній передається значення типу автентифікації.
"PATH_INFO"
Містить будь-який шлях, вказаний клієнтом між назвою скрипта та рядком запиту. Наприклад, якщо скрипт запитувати через URI http://www.example.com/php/path_info.php/some/stuff?foo=bar, то $_SERVER['PATH_INFO'] міститиме /some/stuff.
"ORIG_PATH_INFO"
Необроблене інтерпретатором значення "PATH_INFO".

Приклади

Приклад #1 Використання $_SERVER

<?php
echo $_SERVER['SERVER_NAME'];
?>

Поданий вище приклад виведе щось схоже на:

www.example.com

Примітки

Зауваження:

Це "суперглобальна" або автоматична глобальна змінна. Тобто ця змінна доступна будь-де в скрипті та її не потрібно оголошувати як global $variable;, щоб отримати доступ до неї всередині функції чи метода.

Прогляньте також