PHP Manual

Інформація про PHP та конфігурацію сервера (phpinfo(), php.ini)

22. 08. 2019

Нам часто потрібно дізнатися якомога більше інформації про сервер, для цього чудово підходить рідна функція `phpinfo()`:

phpinfo();
die; // після запису конфігурації вийти зі скрипту

Це дозволяє легко побачити встановлену версію, розширення, бібліотеки та багато іншого.

Інформацію про налаштування та зміну параметрів див. наприкінці цієї статті.

Пошук певного розділу конфігурації

Іноді корисно перерахувати тільки конкретну інформацію, тому ми можемо встановити перший параметр, щоб вказати саме те, що нас цікавить:

phpinfo(INFO_MODULES);

Для налаштування використовуються заздалегідь визначені константи:

Назва константи Значення Опис
INFO_GENERAL 1 Загальна конфігурація, розташування php.ini, дата останнього оновлення, веб-сервер, системна інформація та інше.
INFO_CREDITS 2 PHP Кредити, докладніше див. phpcredits().
INFO_CONFIGURATION 4 Поточне розташування та директиви налаштувань. Більш детальну інформацію надасть функція ini_get().
INFO_MODULES 8 Інформація про встановлені модулі. Для отримання додаткової інформації дивіться функцію get_loaded_extensions().
INFO_ENVIRONMENT ¦ 16 ¦ Інформація про змінну Environment, доступну як $_ENV.
INFO_VARIABLES ¦ 32 ¦ Огляд налаштувань суперглобальних змінних, відомих як EGPCS (Environment, GET, POST, Cookie, Server).
INFO_LICENSE 64 Інформація про ліцензію на використання PHP та інші умови використання.
INFO_ALL -1 Відображати всю інформацію (значення за замовчуванням)

Суперглобальна змінна $_SERVER

Безпосередньо під час роботи скрипта ми можемо дізнатися досить багато інформації про налаштування сервера (наприклад, електронну пошту веб-майстра, поточну IP-адресу відвідувача або URL-адресу, яка викликається в даний момент).

Перерахувати всі існуючі значення легко:

foreach ($_SERVER as $key => $value) {
echo $key . ':' . $value . '<br>';
}

Попередження:** Не всі індекси повинні існувати (наприклад, якщо скрипт запускає cron в режимі CLI, то індекс з URL сторінки або IP-адресою запиту існувати не буде).

Читання спеціальних конфігураційних директив

Значна частина конфігурації зберігається в файлі php.ini і не доступна безпосередньо з PHP звичайним способом. Наприклад, максимальний розмір файлу для завантаження.

Для безпосереднього зчитування конфігурації використовуйте функцію ini_get() (примітка: ця функція може бути включена не на всіх серверах, особливо це стосується хостів).

Наприклад, якщо ми хочемо дізнатися максимальний розмір файлу, який ми можемо завантажити, ми повинні написати власну реалізацію:

/**
* @автор Ян Барашек
*/
public static function getMaxUploadFileSize(): int
{
$maxUpload = min(
ini_get('post_max_size'),
ini_get('upload_max_filesize')
);
if (strncmp($maxUpload, 'M', 1) === 0) {
return (int) str_replace('M', '', $maxUpload);
}
return (int) $maxUpload;
}

Повертає максимальне значення полів upload_max_filesize та post_max_size в МБ.

Налаштування сервера та зміна налаштувань

Самі налаштування зберігаються у файлі php.ini. Його місцезнаходження можна легко знайти за допомогою функції phpinfo() або викликавши команду php --ini.

> php --ini
Configuration File (php.ini) Path: /etc/php/7.1/cli
Loaded Configuration File: /etc/php/7.1/cli/php.ini
Scan for additional .ini files in: /etc/php/7.1/cli/conf.d
Additional .ini files parsed: /etc/php/7.1/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.1/cli/conf.d/10-opcache.ini,
/etc/php/7.1/cli/conf.d/10-pdo.ini,
/etc/php/7.1/cli/conf.d/20-calendar.ini,
/etc/php/7.1/cli/conf.d/20-ctype.ini,
/etc/php/7.1/cli/conf.d/20-exif.ini,
/etc/php/7.1/cli/conf.d/20-fileinfo.ini,
/etc/php/7.1/cli/conf.d/20-ftp.ini,
/etc/php/7.1/cli/conf.d/20-gd.ini,
/etc/php/7.1/cli/conf.d/20-gettext.ini

Крім того, шлях може бути розумно розібраний (працює на Linux-системах):

php -r "phpinfo();" | grep php.ini

Він повернеться:

Configuration File (php.ini) Path => /etc/php/7.1/cli
Loaded Configuration File => /etc/php/7.1/cli/php.ini

Зазвичай конфігурація розбивається на декілька файлів відповідно до середовища та пакетів, де php.ini є глобально дійсним для всіх, в той час як наприклад CLI конфігурація дійсна тільки для режиму CLI, тобто виклику cron або команди з терміналу.

Налаштування обмеження на розмір файлу для завантаження

Прикладом властивості, яка часто налаштовується безпосередньо в php.ini є максимальний розмір файлу завантаження (за замовчуванням 2 МБ, що вже є низьким показником у 2018 році).

У конфігураційному файлі це записується, наприклад, наступним чином:

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M
; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

Середина означає коментар, за яким слідують конкретні директиви конфігурації.

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
Status:
All systems normal.
2024