#Что означает сообщение
unable to bind
PHP-FPM unable to bind listening socket появляется, когда сокет занят, каталог недоступен или порт уже используется другим процессом. Нельзя исправлять это удалением произвольного сокета.
#Как отличить причины
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Сокет занят | Сравните момент появления признака «Сокет занят» с тем, когда ранее работала нужная функция. Важно сопоставить проверку с исходным симптомом, а не с догадкой. | Исправляйте только подтверждённый фактор «Сокет занят», сохраняя прежние настройки. Для проверки результата повторите только прежнее действие. |
| Права | Уточните, какой пользователь и к какому объекту обращается; проверьте сообщение об отказе, состояние учётной записи и требуемую роль. Учитывайте версию PHP-FPM и условия сбоя. | Для случая «PHP-FPM: unable to bind listening socket» восстановите конкретное разрешение или штатную процедуру входа. Изменения вносите по одному, с возможностью возврата. |
| Каталог | При диагностике «PHP-FPM: unable to bind listening socket» уточните, какой файл, каталог или запись вызывает отказ, и сравните время её изменения с началом ошибки. Учитывайте версию PHP-FPM и условия сбоя. | Для случая «PHP-FPM: unable to bind listening socket» исправляйте целевой файл или запись и оставляйте исходник на случай отката. Для проверки результата повторите только прежнее действие. |
| Конфликт версий | Сопоставьте дату сбоя с версией установленного пакета, требуемой платформой и последним обновлением. Учитывайте версию PHP-FPM и условия сбоя. | Для случая «PHP-FPM: unable to bind listening socket» используйте только поддерживаемую сборку изготовителя, сохранив возможность возврата. Изменения вносите по одному, с возможностью возврата. |
#Пошаговое решение
- Зафиксируйте ошибку и проверьте условияЕсли служба PHP-FPM показывает
unable to bind listening socket, запишите имя и путь сокета или порт изjournalctl -u имя-службы -n 100 --no-pager. Убедитесь, что проверяете версию PHP конкретного домена, а не соседний обработчик на том же сервере. - Выполните основную проверку и исправлениеСверьте
listen = ...в настройках всех активных пулов и посмотрите, какой процесс занимает адрес, черезss -lxnpдля файлов сокетов илиss -ltnpдля сетевых портов. Два процесса не смогут одновременно слушать один и тот же Unix-сокет, даже если имена пулов различаются. - Исключите другие подтверждённые причиныЕсли обнаружен конфликт между пулами, после копирования конфигурации измените путь только у неправильно настроенного пула и соответствующий
fastcgi_passNginx. При жалобе на права проверьте владельца каталога/run/phpиlisten.owner,listen.group,listen.mode; не ставьте разрешение 0777. - Проверьте, действительно ли проблема решенаПроверьте конфигурацию средствами установленной версии (
php-fpm8.3 -t— только пример для 8.3), затем запустите нужную службу и проверьте появление слушателя. После этого откройте PHP-страницу и журнал Nginx: исчезновение ошибки запуска без ответа сайта ещё не означает правильную настройку.
#Что важно перед исправлением
Не удаляйте активный socket-файл и не убивайте процессы без проверки: это отключит обслуживаемые сайты. Перед рестартом выполните проверку конфигурации PHP-FPM.