SystemdDoctor
служба не работает php сокеты

Веб-сервер не соединяется с обработчиком PHP

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

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Веб-сервер обращается к порту, а обработчик слушает сокет

    Настройки указывают разные способы связи. Соединение не устанавливается.

  2. Путь сокета изменился после обновления

    Путь содержит номер версии обработчика. После обновления старый путь исчезает, а настройки веб-сервера остаются.

  3. Права на сокет не дают доступа веб-серверу

    Сокет создаётся с правами обработчика. Веб-сервер от другого пользователя получает отказ.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Слушает ли обработчик локальный сокет и какой.

sudo ss -xlnp | grep -i php

Существующие сокеты обработчика и их права.

sudo ls -l /run/php/

Что именно получает веб-сервер при обращении.

sudo journalctl -u nginx -n 20 --no-pager | grep -i "connect() to"

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Веб-сервер обращается к порту, а обработчик слушает сокет
Почему происходит
Настройки указывают разные способы связи. Соединение не устанавливается.
Как проверить
Посмотрите, что слушает обработчик и куда обращается веб-сервер.
sudo ss -xlnp | grep -i php; sudo ss -tlnp | grep 9000
sudo grep -rhoE "fastcgi_pass [^;]+" /etc/nginx/ 2>/dev/null | head
Как исправить
Приведите обе настройки к одному способу. Локальный сокет быстрее и не занимает порт; порт нужен, когда обработчик на другой машине.
2. Путь сокета изменился после обновления
Почему происходит
Путь содержит номер версии обработчика. После обновления старый путь исчезает, а настройки веб-сервера остаются.
Как проверить
Сравните существующие сокеты и путь в настройках.
sudo ls -l /run/php/ 2>/dev/null
sudo grep -rhoE "unix:[^;]+" /etc/nginx/ 2>/dev/null | head
Как исправить
Обновите путь в настройках веб-сервера. Проверять это надо после каждого обновления основной версии обработчика.
3. Права на сокет не дают доступа веб-серверу
Почему происходит
Сокет создаётся с правами обработчика. Веб-сервер от другого пользователя получает отказ.
Как проверить
Посмотрите права сокета и пользователей.
sudo ls -l /run/php/php8.3-fpm.sock 2>/dev/null
sudo grep -hE "^(listen.owner|listen.group|listen.mode)" /etc/php/*/fpm/pool.d/*.conf 2>/dev/null
Как исправить
Задайте владельца и режим доступа сокета в описании пула так, чтобы веб-сервер мог подключаться.

Пример вывода

Путь сокета изменился после обновления версии. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

nginx[12400]: 2026/09/15 19:48:11 [crit] 12400#0: *1 connect() to unix:/run/php/php8.2-fpm.sock failed (2: No such file or directory) while connecting to upstream

$ sudo ls /run/php/
php8.3-fpm.pid  php8.3-fpm.sock

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация PHP-FPM: настройка пулов документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено обновлением версии обработчика без правки настроек веб-сервера.
    собственная проверка, systemd 255
    сверено 15 сентября 2026