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

PHP-FPM: Пул php-fpm не запускается из-за ошибки в pool.d

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

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

Ошибка синтаксиса в файле пула PHP-FPM обычно обнаруживается тестом конфигурации до запуска службы. Ещё возможны дублирующие listen, отсутствующий пользователь, недоступный путь журнала и несовместимые директивы после обновления PHP.

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

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

Ошибка синтаксиса в файле пула PHP-FPM обычно обнаруживается тестом конфигурации до запуска службы. Ещё возможны дублирующие listen, отсутствующий пользователь, недоступный путь журнала и несовместимые директивы после обновления PHP.

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

Возможная причинаКак узнатьЧто делать
Опечатка или неизвестная директиваОпечатка или неизвестная директива. Служба не стартует, тест сообщает имя файла и строку.Служба не стартует, тест сообщает имя файла и строку.Исправить ровно указанную запись.
Конфликт socket/порта двух пуловКонфликт socket/порта двух пулов. Проверка конфигурации проходит, но запуск не может привязать адрес.Проверка конфигурации проходит, но запуск не может привязать адрес.Проверить уникальность listen и существующие слушатели.
Невозможно создать журнал или сокетНевозможно создать журнал или сокет. В системном журнале встречается Permission denied или No such file or directory.В системном журнале встречается Permission denied или No such file or directory.Проверить родительскую директорию и права.

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

  1. Не перезапускайте весь веб-сервер для поиска ошибкиСохраните снимок последних ошибок php-fpm и запишите название службы: php8.2-fpm, php8.5-fpm, php-fpm или отдельная служба панели. При нескольких версиях проверяйте именно ту, что обслуживает упавший сайт.
  2. SSH на Linux с systemd
    Linux · Терминал (Bash)КомандаНужен sudo
    SSH на Linux с systemd. Первое выводит кандидатов, второе — ошибки выбранной службы; PHP 8.2 — пример, замените. Журнал может содержать секретные пути.
    systemctl --type=service --all | grep -E "php.*fpm|php-fpm"; sudo journalctl -u php8.2-fpm -n 80 --no-pager
  1. Запустите проверку синтаксиса без применения измененийВ SSH выполните тест непосредственно установленного двоичного файла FPM, а не php CLI. Смотрите первое сообщение об ошибке, его строку и имя файла pool.d. Успех означает корректный разбор конфигурации, но не гарантирует успешную привязку сокета.
  2. В Debian/Ubuntu для PHP 8.2; в другой сборке исполняемый файл может называться иначе
    Linux · Терминал (Bash)КомандаНужен sudo
    В Debian/Ubuntu для PHP 8.2; в другой сборке исполняемый файл может называться иначе. -t только проверяет конфигурацию.
    sudo php-fpm8.2 -t
  1. Откройте названный файл и найдите конкретную директивуСохраните резервную копию pool.d/имя.conf, затем откройте его редактором панели или через sudoedit. Проверьте закрытие квадратных скобок имени пула, формат key = value, отсутствие повторяющихся несовместимых параметров и реальные пути логов. Не удаляйте весь каталог pool.d ради одной ошибки.
  1. Если синтаксис верный, проверьте занятость listenВ каждом пуле должен быть свой адрес listen. Для Unix-сокета проверьте директорию /run и имя сокета, для TCP — кто слушает нужный порт; FPM нельзя выставлять в интернет. Проверьте, что веб-сервер подключён к тому же адресу.
  2. SSH с правами администратора, только чтение
    Linux · Терминал (Bash)КомандаНужен sudo
    SSH с правами администратора, только чтение. ss показывает TCP-слушатели, для Unix-сокетов используйте ss -lxnp.
    sudo grep -R -nE "^\s*listen\s*=" /etc/php/*/fpm/pool.d/*.conf; sudo ss -ltnp | grep -E "php-fpm|:9000"
  1. После исправления повторите тест и запустите службуТолько когда -t возвращает успешную проверку, выполните systemctl restart для нужного экземпляра в согласованное окно. Затем systemctl status и journalctl должны показать работу службы без повторного сообщения об ошибке; если не так, верните резервную копию.
  2. SSH, администратор, пример PHP 8.2
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    SSH, администратор, пример PHP 8.2. restart кратковременно прервёт активные запросы; используйте только после согласования.
    sudo php-fpm8.2 -t && sudo systemctl restart php8.2-fpm && systemctl is-active php8.2-fpm

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. Проверьте два реальных адреса сайтаОткройте обычную страницу и один заведомо работающий PHP-маршрут. Проверьте HTTP-код и отсутствие 502 от веб-сервера, затем посмотрите журнал пула. Если только один сайт падает, уточните привязку его хоста к пулу.

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

Тест -t завершается успешно, служба active, сокет/порт слушает, запросы доходят до приложения без 502.

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

Если тот же сбой остаётся, проверьте права на файл конфигурации и установку версии PHP. Не подменяйте конфигурацию конфигурацией другой версии; передайте системный журнал администратору без секретных значений.

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

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

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