PHP-FPM LinuxPHP 8.xNginx/Apache

PHP-FPM: страница pm.status_path не открывается после включения

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

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

Это не общая инструкция по включению мониторинга: здесь статус уже включён, однако запрос либо не доходит до нужного пула, либо блокируется веб-сервером. Причину нужно различать по коду ответа.

В этой статье
  1. Симптомы и отличие от похожих неисправностей
  2. Диагностика и пошаговое устранение
  3. Как проверить результат и что предпринять при неуспехе

#Симптомы и отличие от похожих неисправностей

В конфигурации пула включили pm.status_path, но запрос к адресу статуса возвращает 404, 403 или 502. Как проверить путь, передачу FastCGI и ограничение доступа только для администратора, не публикуя сведения о процессах. Это не общая инструкция по включению мониторинга: здесь статус уже включён, однако запрос либо не доходит до нужного пула, либо блокируется веб-сервером. Причину нужно различать по коду ответа.

Возможная причинаКак узнатьЧто делать
В Nginx отсутствует подходящий locationДиректива в FPM не создаёт URL в веб-сервере: FastCGI-запрос должен передаваться правильно.В браузере 404 от Nginx, хотя FPM работает и php-сайт доступен.Проверить точное совпадение маршрута и fastcgi_pass.
Правила доступа запрещают тестСтатус осознанно закрыт для внешних IP-адресов через allow/deny, Basic Auth или сеть управления.Снаружи 403, а запрос по разрешённому каналу с сервера успешен.Не ослаблять защиту; использовать локальный запрос или закрытый туннель.
Неверный сокет или PHP-FPM не применил правкуСтатус настроен у другого пула или FastCGI ведёт в неработающую службу.В Nginx 502 и записи connect() ... failed, обычная PHP-страница тоже не открывается.Сверить listen, обработчик и перезагрузку нужной службы.

#Диагностика и пошаговое устранение

  1. Определите точный код ответа и точку обращенияСначала откройте статус по согласованному закрытому административному адресу, не пересылайте ссылку другим людям. Запишите код 404, 403 или 502 и момент запроса; в журнале Nginx найдите совпадающую строку. Код 403 с внешнего компьютера может быть нормой, если статус специально закрыт от интернета. Не выключайте ограничения ради проверки.
  1. Проверьте status-путь именно в активном пулеВ панели домена узнайте, какой PHP-FPM обслуживает сайт, и найдите соответствующий файл пула. Убедитесь, что pm.status_path = /fpm-status задан без опечатки и соответствует URI, который передаётся в FastCGI. Запишите путь listen и существование пула. Если путь начинается не с /, исправьте его: статусный URI должен быть задан как путь, а не доменное имя или имя файла.
  2. Пример в конфигурации конкретного пула
    INI
    Пример в конфигурации конкретного пула. Если URI у вас другой, сохраняйте согласованное имя; избегайте пересечения с публичным маршрутом приложения.
    pm.status_path = /fpm-status
  1. Проверьте, куда Nginx направляет запрос к статусуОткройте конфигурацию виртуального сервера через панель либо у администратора. Там должен существовать отдельный location для указанного пути с fastcgi_pass на тот же пул, что обслуживает сайт (или отдельный статусный listen при его настройке). Например, location = /fpm-status исключает случайные совпадения с другими URL. Если статус возвращает страницу приложения, запрос попадает в общий try_files вместо специального location.
  2. Иллюстрация для локального IPv4 и условного сокета
    Nginx
    Иллюстрация для локального IPv4 и условного сокета. Обязательно замените сокет на фактический listen; проверьте отдельный доступ по IPv6, VPN, прокси и схему маршрутизации. Не публикуйте статус.
    location = /fpm-status {
        allow 127.0.0.1;
        deny all;
        include fastcgi_params;
        fastcgi_pass unix:/run/php/example.sock;
    }
  1. Сверьте безопасность и интерпретацию 403Если в location стоит allow 127.0.0.1; deny all;, браузер с внешнего IP закономерно получает 403. Проверяйте через локальное соединение на сервере с правильным именем виртуального хоста и действующим сертификатом либо через разрешённый защищённый административный канал. Не задавайте allow all или публичное открытие пути: статус показывает число процессов, очередь и адреса запросов.
  1. Разберите 502 через путь сокета, а не через статус-параметрВ журнале Nginx ищите connect() to unix:... failed; сравните путь с listen в файле пула и проверьте, активен ли PHP-FPM. Если сокет отсутствует, устраните неисправность запуска службы. Если есть Permission denied, приведите в соответствие группу веб-сервера и listen.owner/ACL, не ставьте права 777. Только после того как обычный PHP-запрос работает, возвращайтесь к статусу.
  1. Проверьте синтаксис Nginx и PHP-FPM перед применениемЕсли меняли оба файла, сохраните их резервные копии, затем выполните тесты соответствующих бинарников. На Debian PHP 8.2: sudo php-fpm8.2 -t и sudo nginx -t. При обеих успешных проверках примените sudo systemctl reload php8.2-fpm и sudo systemctl reload nginx. При любой ошибке остановитесь, восстановите копию ошибочного файла и снова протестируйте; перезагрузка не должна скрывать синтаксическую ошибку.
  2. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Проверка конфигурации FPM PHP 8.2 и Nginx; нужны права администратора.
    Linux · Терминал (Bash)КомандаНужен sudo
    Проверка конфигурации FPM PHP 8.2 и Nginx; нужны права администратора. Версию PHP подставьте вашу.
    sudo php-fpm8.2 -t
    sudo nginx -t
    Вариант 2Применять только после успешных проверок; службы и версия должны соответствовать системе.
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Применять только после успешных проверок; службы и версия должны соответствовать системе.
    sudo systemctl reload php8.2-fpm
    sudo systemctl reload nginx

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

  1. Получите ответ через разрешённый канал и проверьте содержимоеИз закрытого административного канала откройте /fpm-status и убедитесь, что видны поля pool, process manager, active processes, listen queue, max children reached. Если вместо них приходит HTML приложения, повторно проверьте location и порядок обработки маршрутов. Если отображается информация другого пула, fastcgi_pass настроен неправильно. При ошибках верните сохранённые настройки location и статус-пути, затем повторите тест конфигурации.
  1. Закрепите закрытый доступ и уберите временные способы диагностикиПосле успешного теста убедитесь, что внешний неавторизованный запрос по-прежнему получает 403 либо не имеет маршрута. Запишите в документацию внутренний адрес, разрешённые IP и имя пула; не публикуйте снимки статуса с URL активных запросов. Если использовали временный администраторский туннель, закройте его. Статус пула нельзя путать со страницей обычной проверки здоровья приложения.

#Как проверить результат и что предпринять при неуспехе

Успех — статус доступен через разрешённый маршрут и показывает верный пул, а извне остаётся закрытым. При 404 проверяйте совпадение location/pm.status_path, при 502 — соединение FastCGI, при 403 — ожидаемую политику доступа. Верните резервные копии при ошибках конфигурации и проведите повторный тест перед reload.

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

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

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