PHP-FPM Linux, PHP-FPM (версия уточняется)

PHP-FPM: Несколько сайтов случайно используют один пул PHP-FPM

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Два сайта могут случайно использовать один и тот же пул PHP-FPM из-за общей ссылки на сокет в конфигурации веб-сервера. Они тогда работают с одинаковыми правами и настройками среды, а конкурируют за pm.max_children; исправление требует проверки маршрута каждого виртуального хоста.

В этой статье
  1. Что происходит и когда применима инструкция
  2. Причины и диагностические признаки
  3. Подробная пошаговая инструкция
  4. Как проверить, что проблема исправлена
  5. Если не помогло — дальнейшая диагностика и откат

#Что происходит и когда применима инструкция

Два сайта могут случайно использовать один и тот же пул PHP-FPM из-за общей ссылки на сокет в конфигурации веб-сервера. Они тогда работают с одинаковыми правами и настройками среды, а конкурируют за pm.max_children; исправление требует проверки маршрута каждого виртуального хоста.

#Причины и диагностические признаки

Возможная причинаКак узнатьЧто делать
Одинаковый fastcgi_pass или SetHandlerОдинаковый fastcgi_pass или SetHandler. Веб-сервер для двух доменов указывает на один socket/port.Веб-сервер для двух доменов указывает на один socket/port.Сверить конфигурацию виртуальных хостов.
Два пула конфликтуют по адресу listenДва пула конфликтуют по адресу listen. Разные файлы pool.d объявляют одинаковый Unix-путь или TCP-порт, второй пул не может привязаться.Разные файлы pool.d объявляют одинаковый Unix-путь или TCP-порт, второй пул не может привязаться.Назначить непересекающиеся адреса и проверить запуск.
Панель хостинга намеренно даёт общий пулПанель хостинга намеренно даёт общий пул. Сайты одного владельца используют одинаковые UID и общий сервер по выбранному тарифу.Сайты одного владельца используют одинаковые UID и общий сервер по выбранному тарифу.Проверить модель изоляции с провайдером.

#Подробная пошаговая инструкция

  1. Составьте список затронутых сайтов и запланируйте изменениеЗафиксируйте каждый домен, его document root, технического пользователя и текущую версию PHP. Перед работой получите резервную копию настроек и проверьте возможность возврата. Нельзя без согласования перенаправлять критичные сайты в новый пул.
  1. Выведите адреса FastCGI обоих виртуальных хостовВ Nginx ищите fastcgi_pass, а в Apache — SetHandler или ProxyPassMatch с proxy:fcgi; в панели хостинга адрес может формироваться автоматически. Сверьте путь и порт с listen из pool.d. Чтение полного вывода nginx -T может раскрыть секреты: не публикуйте его.
  2. SSH, администратор, только чтение конфигурации пулов Debian/Ubuntu
    Linux · Терминал (Bash)КомандаНужен sudo
    SSH, администратор, только чтение конфигурации пулов Debian/Ubuntu. На панели используйте её штатную настройку.
    sudo grep -R -nE "^\s*(\[|listen\s*=|user\s*=|group\s*=)" /etc/php/*/fpm/pool.d/*.conf
  1. Определите, должны ли сайты иметь разные праваДля разных владельцев и для приложений с секретами разделение по учётным записям предпочтительнее общего пула. Учтите: отдельные пулы FPM не дают полной изоляции уровня контейнера; общие ресурсы и, в пределах одного экземпляра, OPcache могут оставаться общими.
  1. Создайте второй пул с уникальными значениямиИспользуйте штатный мастер панели или на тестовом сервере создайте новый pool.d с уникальным именем, listen, user, group и отдельным пределом pm.max_children. Не копируйте чужие пароли, не используйте пользователя root и не ставьте всем сайтам общий writable-каталог.
  1. Перенаправьте один виртуальный хост на новый пулПосле успешной проверки php-fpm -t и перечитывания FPM измените fastcgi_pass или соответствующий обработчик только выбранного домена. Проверьте конфигурацию веб-сервера штатной командой и примените reload без остановки соседних сайтов.
  2. SSH, административные права, Debian PHP 8.2 + Nginx
    Linux · Терминал (Bash)КомандаНужен sudo
    SSH, административные права, Debian PHP 8.2 + Nginx. Только проверка двух конфигураций; при ошибке остановитесь. Если используется Apache или панель, команды и порядок будут иными.
    sudo php-fpm8.2 -t && sudo nginx -t
  1. Проверяйте отдельно оба сайтаОткройте одинаковый безопасный PHP-маршрут каждого сайта и проверьте его пользователя выполнения в закрытой диагностике, корректность записи собственных файлов и отсутствие чтения чужих. После запуска второго пула замерьте RAM: изоляция потребляет дополнительную память.
  1. Закрепите схему и порядок откатаУдалите тестовую диагностику, задокументируйте соответствие «сайт → версия PHP → пул → socket → пользователь». Если хоть один сайт получает 502, верните адрес сокета из резервной конфигурации и проверьте журналы обоих экземпляров.

#Как проверить, что проблема исправлена

У доменов разные FastCGI-адреса и процессы под назначенными пользователями; формы, авторизация и запись каждого сайта работают без доступа к данным другого.

#Если не помогло — дальнейшая диагностика и откат

При конфликте слушателей найдите дублирующий listen. Если панель пересоздаёт pool.d автоматически, меняйте назначение через панель или провайдера, а не вручную.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.