Як використовувати файл .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.iniServBay чи налаштування інших проектів. - Висока гнучкість: Розробник може задавати окремі набори 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_filesizepost_max_sizememory_limitdisplay_errorslog_errorsmax_execution_timesession.save_pathdate.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.ini1
2
2
Далі відкрийте .user.ini у текстовому редакторі і додайте потрібні PHP-налаштування — по одному на рядок. Наприклад:
ini
; Встановити максимальний розмір завантаження файлів у 20MB
upload_max_filesize = 20M
; Встановити ліміт пам’яті для PHP-скриптів на 256MB
memory_limit = 256M
; Увімкнути відображення помилок (рекомендовано лише для розробки)
display_errors = On1
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 якраз ілюструє цю філософію.
