$_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'];
?>
Поданий вище приклад виведе щось
схоже на:
Примітки
Зауваження:
Це "суперглобальна" або
автоматична глобальна змінна. Тобто ця змінна доступна будь-де в скрипті та її
не потрібно оголошувати як global $variable;, щоб отримати
доступ до неї всередині функції чи метода.