
В мире веб-разработки инструменты конфигурации постоянно меняются. Если раньше .htaccess был повсеместным для PHP-проектов, то сегодня в связке с PHP-FPM его место часто занимает .user.ini. Давайте разберем, что это за файл и почему он стал предпочтительным решением.
Эволюция конфигурации: от .htaccess к .user.ini
.htaccess: Гибкость и её цена
Файл .htaccess — это децентрализованный конфигурационный файл веб-сервера Apache. Он позволял веб-мастерам настраивать правила перезаписи URL, управлять доступом и изменять другие параметры для своих директорий без доступа к главному конфигу сервера.
Однако, у .htaccess были недостатки:
- Производительность: Apache сканировал директории при каждом запросе, что замедляло работу.
- Специфика Apache: Директивы .htaccess не поддерживаются другими веб-серверами, такими как Nginx.
- Несовместимость с PHP-FPM: PHP-FPM (FastCGI Process Manager) — отдельный обработчик PHP, не имеющий доступа к директивам .htaccess, которые обрабатывает веб-сервер. Поэтому PHP-настройки в .htaccess не работали с PHP-FPM.
С развитием Nginx и PHP-FPM как стандарта для высокопроизводительных веб-сайтов, возникла потребность в новом, более эффективном способе настройки PHP.
.user.ini: PHP-конфигурация для PHP-FPM
Что такое .user.ini?
.user.ini — это конфигурационный файл, предназначенный исключительно для настроек PHP. В отличие от .htaccess, его парсит сам PHP-интерпретатор (PHP-FPM), а не веб-сервер. Это позволяет управлять PHP-параметрами на уровне директории.
Как работает .user.ini?
Когда PHP-FPM обрабатывает скрипт, он ищет .user.ini в директории скрипта и выше по дереву. Найденные настройки применяются к скрипту. Для оптимизации PHP кэширует содержимое .user.ini на определённое время (по умолчанию user_ini.cache_ttl = 300 секунд), поэтому изменения вступают в силу с небольшой задержкой.
Что можно и нельзя настроить?
В .user.ini можно изменять только те PHP-директивы, которые допускают переопределение на уровне директории или пользователя (имеют режимы PHP_INI_PERDIR, PHP_INI_USER или PHP_INI_ALL). К ним относятся:
- Лимиты ресурсов:
upload_max_filesize,post_max_size,memory_limit,max_execution_time. - Управление ошибками:
display_errors,error_reporting. - Часовой пояс:
date.timezone. - Настройки сессий:
session.save_path.
Чего нельзя настроить через .user.ini:
- Директивы веб-сервера: Перезапись URL, управление доступом, редиректы. Эти функции настраиваются в конфигурации Nginx или Apache.
- Глобальные настройки PHP-FPM: Параметры пулов процессов, сокеты. Они задаются в файлах
php-fpm.conf.
Преимущества .user.ini
Использование .user.ini предлагает следующие ключевые преимущества:
- Повышенная производительность: Снижение нагрузки на веб-сервер, так как .user.ini обрабатывается PHP.
- Улучшенная безопасность: Ограниченное влияние только на PHP-интерпретатор.
- Чистая архитектура: Чёткое разделение задач между веб-сервером и PHP.
- Переносимость: Работает независимо от используемого веб-сервера.
Пример использования для российских веб-проектов
Для владельцев сайтов на популярных CMS, таких как 1С-Битрикс или WordPress, часто необходимо увеличить лимиты ресурсов. В корневой директории сайта можно создать .user.ini со следующим содержимым:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120
display_errors = Off
date.timezone = Europe/Moscow
Эти настройки применятся ко всем PHP-скриптам в данной директории, оптимизируя работу сайта и решая типовые проблемы с лимитами.
Заключение
.user.ini — это современный, производительный и безопасный способ управления PHP-конфигурацией в связке с PHP-FPM, полностью заменивший .htaccess в этой роли. Понимание его принципов работы критично для создания эффективных и надежных веб-проектов в сегодняшних реалиях.








