#Симптом и границы применимости
После перезапуска нужного PHP-FPM пользователь видит 502, потому что веб-сервер обращается к сокету, который больше не слушается. Убедитесь, что речь именно об исчезновении слушателя после restart, а не о Permission denied при создании сокета или о переполнении процессов; причины разного типа требуют разных действий.
#Возможные причины и как их отличить
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Запустился другой конфигурационный файлЗапуск из панели и systemd могут читать разные настройки. | Сокет появился по другому пути | Проверить unit ExecStart и файл пула |
| Пул отключён или не включён в новую сборкуСлужба может работать только с другими сайтами. | systemctl active, но нужной секции пула нет | Сверить pool.d и включаемые файлы |
| Конфликт сокета или ошибка запуска выбранного пулаОдин сокет не может одновременно принадлежать двум независимым слушателям. | В журнале уже занят адрес, ошибка parse или bind | Найти точную строку журнала до перезапуска |
#Пошаговая диагностика и исправление
- Зафиксируйте старый и новый путьОткройте через SSH nginx -T или Apache VirtualHost, выпишите путь fastcgi_pass/SetHandler. После restart выполните ss -xlpn — существует ли слушатель по этому адресу. Не создавайте файл сокета вручную и не удаляйте обнаруженный файл чужого пула.
- Чтение Unix-сокетов; путь и имя процесса видны в выводеLinux · Терминал (Bash)КомандаНужен sudoЧтение Unix-сокетов; путь и имя процесса видны в выводе.
sudo ss -xlpn | grep -i fpm
- Уточните реальное имя службы и конфигурациюВ systemctl list-units найдите службу FPM версии сайта, а затем через systemctl cat просмотрите unit и ExecStart. Если панель использует собственную службу, стандартный php8.2-fpm может не иметь отношения к сайту.Linux · Терминал (Bash)КомандаВторая команда примерная, замените правильной службой.
systemctl list-units --type=service --all | grep -i fpm; systemctl cat php8.2-fpm
- Проверьте все секции выбранного пулаУбедитесь, что конфигурация нового FPM включает файл именно этого домена и не переименован файл .conf. Сравните listen и текущие сокеты, проверьте дубли listen в нескольких пулах. В управляемых панелях изменения производите через интерфейс панели, иначе генератор может их перезаписать.
- Проверьте журнал после restartНайдите точное время перезапуска в journalctl; сообщения failed to listen, address already in use, unknown entry указывают на неисправность загрузки пула. Помните, что статус active у главного процесса не означает работу всех ожидаемых пулов.Linux · Терминал (Bash)КомандаНужен sudoКоманда для systemd, замените имя установленной службы.
sudo journalctl -u php8.2-fpm --since "20 minutes ago" --no-pager
- Исправьте настройки и повторно проверьтеСохраните копию пула, устраните подтверждённую ошибку пути/подключения и проверьте его конфигурацию бинарным файлом FPM нужной версии. Затем безопасно перезапустите один затронутый экземпляр, не все PHP-службы сразу. Перепроверьте сокет и HTTP-ответ.
- После успешной проверки restart выполняется отдельно в установленном окруженииLinux · Терминал (Bash)С осторожностьюНужен sudoПосле успешной проверки restart выполняется отдельно в установленном окружении.
sudo php-fpm8.2 -t; sudo ss -xlpn | grep -i fpmКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- Проверьте устойчивость при повторном запускеЕсли возможно, в согласованное время повторите запуск службы и убедитесь, что файл слушателя снова появляется. При повторении сбоя изучите каталог /run и создание runtime-путей, а не повышайте chmod без понимания причин.
#Как проверить результат
После restart сокет создаётся по строго ожидаемому пути и обслуживается правильным процессом, тестовая PHP-страница отвечает стабильно, отсутствует ошибка 502 от прокси.
#Если проблема не устранена
Если сокет появляется, но доступ запрещён, изучите listen.owner/group/mode и ACL; если сокет не создаётся — читайте конкретную ошибку запуска FPM.