Справочник

Настройки PHP для одного сайта: пул PHP-FPM и .user.ini

Настройки в php.ini действуют на все сайты сервера. Для одного сайта есть два способа: отдельный пул PHP-FPM — со своими процессами и настройками, или файл .user.ini в папке сайта — проще, но меняет не всё.

≈ 5 мин чтения
Содержание 7

Какой способ выбрать

Пул PHP-FPMФайл .user.ini
что меняетбольше настроек, например max_file_uploadsкроме тех, что меняются только в php.ini
нужен ли перезапускданет, действует в течение 5 минут
свои процессы и пользовательданет
может ли код сайта переписатьнет, с php_admin_valueда, функцией ini_set() — часть настроек

Где что можно менять — в списке настроек. Команды — для PHP 8.3 из Ubuntu 24.04. В Ubuntu 26.04 стоит PHP 8.5: в путях и командах вместо 8.3 пишите 8.5. Какая версия у вас, покажет ls /etc/php/.

Отдельный пул PHP-FPM

Команды вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне. Вместо shop подставьте короткое имя сайта латиницей.

  1. Создайте файл пула: sudo nano /etc/php/8.3/fpm/pool.d/shop.conf. Имя должно заканчиваться на .conf, иначе PHP-FPM его не прочитает. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter.
  2. Вставьте строки ниже, поменяйте значения php_admin_value на свои и сохраните: Ctrl+O, Enter, затем Ctrl+X.
  3. Проверьте настройки: sudo php-fpm8.3 -t. В ответе должно быть test is successful. Если вместо этого ошибка — в ней названа строка с опечаткой.
  4. Перезапустите PHP-FPM: sudo systemctl restart php8.3-fpm. Если команда ничего не ответила, PHP перезапущен.
  5. Проверьте, что появился сокет: ls /run/php/. В ответе должен быть php8.3-fpm-shop.sock.
[shop]
user = www-data
group = www-data
listen = /run/php/php8.3-fpm-shop.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
php_admin_value[memory_limit] = 256M
php_admin_value[upload_max_filesize] = 64M
php_admin_value[post_max_size] = 80M

Строки listen.owner и listen.group нужны: без них сокет будет принадлежать root, nginx не сможет к нему подключиться и сайт ответит 502 Bad Gateway. Числа pm — как в пуле www, что они значат.

Как направить сайт в новый пул

  1. Откройте файл сайта в nginx: sudo nano /etc/nginx/sites-available/example.com — с именем вашего файла.
  2. Найдите строку fastcgi_pass и замените в ней сокет: fastcgi_pass unix:/run/php/php8.3-fpm-shop.sock;.
  3. Сохраните файл и проверьте настройки nginx: sudo nginx -t. В ответе должно быть test is successful.
  4. Примените: sudo systemctl reload nginx.

Проверьте результат через phpinfo(): в колонке Master Value должны быть значения из пула. Процессы пулов складываются: два пула по 5 процессов — это до 10 процессов в памяти. Если памяти мало, поставьте в новом пуле pm = ondemand.

Файл .user.ini

PHP ищет файлы .user.ini в папке выполняемого скрипта и выше — до корня сайта. Создайте файл в корне: sudo nano /var/www/example.com/.user.ini — и впишите строки как в php.ini:

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 80M

Перезапуск не нужен: PHP перечитывает .user.ini раз в 300 секунд, то есть изменения вступят в силу в течение 5 минут. Проверьте их через phpinfo() — в колонке Local Value.

Если строка из .user.ini не действует, проверьте пул: настройку, заданную там через php_admin_value, .user.ini не меняет. Найти такие строки: grep -rn 'php_' /etc/php/8.3/fpm/pool.d/. Через php_value — меняет.

nginx не прячет файлы с точкой в начале имени: .user.ini можно открыть по прямой ссылке. Не храните в нём ничего, кроме настроек PHP.

На виртуальном хостинге

Своего пула там нет. Настройки PHP для сайта меняют в панели хостинга, а если такого раздела нет — файлом .user.ini в папке сайта.

Источники

Сверено 14 октября 2026 года.

Что почитать дальше