Як використовувати файл .user.ini
у ServBay: Посібник із локального налаштування PHP
ServBay — це потужне інтегроване локальне середовище розробки для вебу, створене спеціально для розробників і підтримує різні мови та технологічні стеки. Зокрема, ServBay дозволяє зручно керувати версіями PHP і легко налаштовувати середовище. На практиці різні проекти можуть вимагати унікальних PHP-налаштувань, наприклад, обмежень на розмір завантаження файлів, лімітів пам’яті чи рівнів відображення помилок. Пряма зміна глобального файлу php.ini
вплине на всі проекти, що дуже незручно, якщо ви працюєте з кількома проектами одночасно.
На щастя, PHP має механізм .user.ini
, який дозволяє розробникам визначати власні налаштування PHP в окремих директоріях і їх дочірніх папках без необхідності змінювати глобальний php.ini
. ServBay повністю підтримує .user.ini
, що робить тонке налаштування PHP для певного проекту чи папки простим і швидким.
У цьому матеріалі ми розглянемо, як працює файл .user.ini
, як його правильно використовувати в ServBay, і дамо приклади налаштувань для конкретного проекту.
Вступ до файлу .user.ini
Файл .user.ini
з’явився, починаючи з PHP 5.3.0. Він пропонує гнучкіший і безпечніший спосіб локального налаштування параметрів PHP у порівнянні з методами типу php_value
чи php_flag
у файлах веб-сервера (наприклад, Apache .htaccess
). Розробник може помістити .user.ini
у потрібну веб-директорію, і налаштування, вказані в цьому файлі, діятимуть лише в ній та у всіх вкладених папках.
Основні характеристики
- Локальна область дії: Інструкції з файлу
.user.ini
впливають лише на ту папку та її підпапки, в якій файл знаходиться. Вони не змінюють глобальнийphp.ini
ServBay чи налаштування інших проектів. - Висока гнучкість: Розробник може задавати окремі набори PHP-налаштувань для кожного проекту, залежно від потреб.
- Легке адміністрування: Не потрібно редагувати глобальні файли конфігурації. Менше ризику виникнення конфліктів, конфігурації стають більш ізольованими та портативними.
- Без необхідності перезапуску: На відміну від змін у
php.ini
, для яких часто потрібен перезапуск PHP-FPM або веб-сервера, зміни у.user.ini
набирають чинності автоматично після закінчення часу, зазначеного у параметріuser_ini.cache_ttl
(за замовчуванням — 300 секунд, тобто 5 хвилин).
Доступні для налаштування директиви
Не всі параметри PHP можна змінити через .user.ini
. Їх перелік визначається "режимом зміни" (Changeable Modes). Лише директиви з режимом PHP_INI_USER
, PHP_INI_PERDIR
або PHP_INI_ALL
можна задавати у .user.ini
.
Типові параметри, доступні для зміни у .user.ini
:
upload_max_filesize
post_max_size
memory_limit
display_errors
log_errors
max_execution_time
session.save_path
date.timezone
Параметри з режимом PHP_INI_SYSTEM
(наприклад, extension_dir
, zend_extension
, disable_functions
і подібні) не можна налаштовувати через .user.ini
. Їх можна змінювати лише в основному файлі php.ini
або у налаштуваннях веб-сервера.
Щоб дізнатися режим зміни кожної директиви, звертайтесь до офіційної документації з php.ini-директив.
Використання .user.ini
у ServBay
Процес використання .user.ini
у ServBay дуже простий. Розглянемо кроки на прикладі налаштування upload_max_filesize
та memory_limit
.
Припустимо, ваш корінь веб-сайту у ServBay знаходиться за замовчуванням у /Applications/ServBay/www/
, а ви хочете налаштувати PHP для проекту myproject
, у якого веб-коренева папка — /Applications/ServBay/www/myproject/public
.
Крок 1: Визначте цільову директорію
Спочатку дізнайтесь, для якої папки хочете застосувати зміни. Зазвичай, це веб-корінь вашого проекту (наприклад, public
у Laravel чи Symfony) або специфічна підпапка, для якої потрібна унікальна конфігурація.
Наприклад: /Applications/ServBay/www/myproject/public
Крок 2: Створіть або відредагуйте файл .user.ini
У цільовій папці створіть файл .user.ini
(або відредагуйте існуючий). Зверніть увагу: файли, що починаються з крапки, зазвичай приховані в файлових системах. Можливо, потрібно буде вмикати відображення прихованих файлів у менеджері файлів.
Створіть файл командою у терміналі:
bash
cd /Applications/ServBay/www/myproject/public
touch .user.ini
1
2
2
Далі відкрийте .user.ini
у текстовому редакторі і додайте потрібні PHP-налаштування — по одному на рядок. Наприклад:
ini
; Встановити максимальний розмір завантаження файлів у 20MB
upload_max_filesize = 20M
; Встановити ліміт пам’яті для PHP-скриптів на 256MB
memory_limit = 256M
; Увімкнути відображення помилок (рекомендовано лише для розробки)
display_errors = On
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Збережіть і закрийте файл .user.ini
.
Крок 3: Дочекайтесь застосування змін або примусово оновіть
Зміни у .user.ini
не діють миттєво — PHP кешує цей файл для підвищення продуктивності. Час дії кешу визначається параметром user_ini.cache_ttl
(зазвичай — 300 секунд, тобто 5 хвилин). Після закінчення цього часу налаштування автоматично оновляться.
Щоб прискорити застосування змін, можна спробувати такі дії (залежить від версії та конфігурації ServBay):
- Перезапустити відповідний процес PHP-FPM: У програмі ServBay перейдіть до потрібної версії PHP і спробуйте зупинити та заново запустити відповідний сервіс PHP-FPM.
- Перезапустіть ServBay: Це найбільш радикальний спосіб, але він зупиняє всі локальні сервіси.
- Дочекайтесь закінчення кешування: Рекомендований спосіб, якщо ситуація не вимагає негайних змін.
Крок 4: Перевірка дії .user.ini
Щоб переконатись, що ваші налаштування у .user.ini
працюють, створіть невеликий PHP-файл для відображення інформації про поточне оточення PHP.
В тій же директорії, де знаходиться .user.ini
(наприклад, /Applications/ServBay/www/myproject/public
), створіть файл info.php
із таким вмістом:
php
<?php
phpinfo();
?>
1
2
3
2
3
Збережіть файл info.php
.
Відкрийте цей файл у браузері, звернувшись до відповідної адреси вашого проекту в ServBay. Наприклад, якщо ваш проект доступний за доменом myproject.servbay.demo
, а файл info.php
— у папці public
, використайте адресу https://myproject.servbay.demo/info.php
.
На сторінці з результатами функції phpinfo()
знайдіть параметри, які ви налаштовували (upload_max_filesize
, memory_limit
, display_errors
тощо). Ви побачите дві колонки: Master Value
та Local Value
.
Master Value
вказує значення з глобальногоphp.ini
.Local Value
— значення, що діє для поточного скрипту, яке може надходити з.user.ini
або налаштувань веб-сервера.
Якщо у полі Local Value
зазначені ті значення, які ви задавали у .user.ini
(наприклад, 20M
, 256M
, On
), значить ваш файл працює коректно.
Важливо: Після перевірки з міркувань безпеки обов’язково видаліть файл info.php
або обмежте до нього доступ, оскільки він розкриває детальну інформацію про сервер.
Додаткові пояснення та застереження
- Ім’я та розташування файлу: Файл обов’язково повинен називатися
.user.ini
і знаходитися у папці, для якої ви хочете застосувати налаштування. Він впливає на цю папку та всі підпапки. - Режим директив: Лише параметри з допустимими режимами (
PHP_INI_USER
,PHP_INI_PERDIR
,PHP_INI_ALL
) можна вказувати у.user.ini
. Параметри з режимомPHP_INI_SYSTEM
ігноруються та часто не формують помилок. Завжди перевіряйте офіційну документацію. - Кешування: Звертайте увагу на налаштування
user_ini.cache_ttl
. Якщо часто змінюєте.user.ini
і бажаєте швидко бачити результати, тимчасово зменште це значення в глобальномуphp.ini
(наприклад,user_ini.cache_ttl = 5
), але не залишайте його малим у production через ризик втрати продуктивності. Після зміни глобальногоphp.ini
потрібен перезапуск PHP-FPM. - Пріоритет: Пріоритет налаштувань PHP зазвичай такий: стандартні значення <
php.ini
(та додаткові.ini
файли) < налаштування веб-сервера (php_value
/php_flag
, якщо використовується модуль Apache/nginx) <.user.ini
< виклики функціїini_set()
у коді. Значення з.user.ini
перекривають глобальні, але можуть бути змінені у скрипті черезini_set()
. - Безпека: Не рекомендується зберігати чутливі дані у
.user.ini
. Незважаючи на те, що він впливає на конкретну директорію, цей файл зазвичай доступний у веб-каталозі (хоча, як правило, сервер відмовляє у прямому доступі).
Поширені питання (FAQ)
Q: Я створив файл .user.ini
і додав налаштування, але вони не працюють. Чому?
A: Можливі причини:
- Неправильне ім’я або розташування файлу: Переконайтесь, що файл названо саме
.user.ini
і що він знаходиться у потрібній папці. - Недопустимий режим директиви: Ви могли спробувати змінити директиву, яка не дозволена у
.user.ini
(режим неPHP_INI_USER
абоPHP_INI_PERDIR
). Перевіряйте офіційну документацію PHP. - Кеш не оновився: Дочекайтесь закінчення часу згідно з
user_ini.cache_ttl
(як правило, 5 хвилин) або перезапустіть PHP-FPM. - Синтаксична помилка: Перевірте файл
.user.ini
на відсутність помилок у написанні. - Перекриття налаштувань: Переконайтесь, що у коді не використовується функція
ini_set()
, яка може змінювати налаштування.
Q: Чим .user.ini
відрізняється від глобального файлу php.ini
?
A: Глобальний php.ini
впливає на всю PHP-систему (або на всі додатки для певної версії PHP), і його налаштування застосовуються до всіх скриптів, окрім випадків змін нижчого рівня. .user.ini
діє лише у своїй папці і дочірніх папках — і лише для певних директив. Головна перевага .user.ini
— локальність і відсутність потреби редагувати глобальний конфіг.
Висновок
Використання файлів .user.ini
у ServBay — це найкращий спосіб керувати проектними налаштуваннями PHP. Такий підхід надзвичайно гнучкий: ви можете налаштовувати середовище для кожного проекту окремо, не впливаючи на інші проекти чи глобальні налаштування ServBay. Спираючись на цей посібник і наведені приклади, ви зможете впевнено використовувати файли .user.ini
у власних проектах, суттєво підвищуючи ефективність розробки та комфорт адміністрування робочого середовища. Ідея ServBay — забезпечити розробників потужними та гнучкими локальними інструментами, а чудова підтримка .user.ini
якраз ілюструє цю філософію.