Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Nginx Error 502: Bad Gateway (connect() to unix:/var/run/php-fpm.sock failed: No such file) Linux / DevOps

Nginx 502: php-fpm.sock failed (No such file or directory) — Решение

Обновлено: 18.08.2026  ·  Официальная база знаний

Веб-сервер не может обнаружить сокет-файл интерпретатора PHP. В браузере выводится 502 Bad Gateway, а в журнале ошибок: connect() to unix:/var/run/php/php-fpm.sock failed (2: No such file or directory) while connecting to upstream.

Конфигурация NginxРеальное состояние ФССуть проблемы
unix:/var/run/php/php7.4-fpm.sockУстановлен PHP 8.2 (php8.2-fpm.sock)Устаревший путь после обновления версии PHP
unix:/run/php-fpm/www.sockСлужба php-fpm остановленаФайл сокета удален при остановке демона
Директория /run/php/Каталог удален после перезагрузки ОСВременная файловая система tmpfs очистила папку
  • Посетители получают мгновенную ошибку 502 при запросе любых .php страниц.
  • Статические файлы (css, js, png) отдаются веб-сервером корректно.
  1. Проверьте фактический статус службы PHP-FPM:
    sudo systemctl status php*-fpm
    # Если служба выключена, запустите ее:
    sudo systemctl start php8.2-fpm
    sudo systemctl enable php8.2-fpm
  2. Найдите реальный путь к сокет-файлу в файловой системе:
    sudo find /run /var/run -name "*fpm*.sock"
  3. Проверьте директиву listen в конфигурации пула PHP (/etc/php/8.x/fpm/pool.d/www.conf):
    grep "^listen =" /etc/php/*/fpm/pool.d/www.conf
  4. Приведите строку fastcgi_pass в конфигурационном блоке server Nginx к найденному пути:
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        # Укажите точный путь:
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }
  5. Проверьте конфигурацию Nginx на синтаксические ошибки и перезапустите:
    sudo nginx -t
    sudo systemctl reload nginx
Подсказка: Каталог /run смонтирован как tmpfs в оперативной памяти и очищается при каждой перезагрузке сервера. Убедитесь, что systemd-юнит PHP-FPM содержит директиву RuntimeDirectory=php для автоматического пересоздания структуры папок.
Практический опыт инженера: Создавайте абстрактный симлинк или используйте `upstream backend_php { server unix:/run/php/php-current.sock; }`, чтобы не править конфиги всех виртуальных хостов при bump версии PHP.

Частые вопросы (FAQ)

Почему сокет исчезает после каждой перезагрузки сервера?

Потому что директория /run/php удаляется из RAM при выключении. PHP-FPM должен автоматически создавать ее через systemd механизм RuntimeDirectory=php или tmpfiles.d.

Как переключить Nginx на работу через TCP-порт вместо сокета?

В www.conf укажите 'listen = 127.0.0.1:9000', а в конфигурации Nginx задайте 'fastcgi_pass 127.0.0.1:9000;'.

Почему после apt upgrade сайт выдает ошибку сокета 502?

Обновление установило новую версию PHP (например, с 8.1 на 8.2), создало новый сокет php8.2-fpm.sock, а Nginx продолжает обращаться к старому сокету php8.1-fpm.sock.

Как запустить PHP-FPM с созданием сокета в кастомном месте?

Отредактируйте директиву listen в pool.d/www.conf, указав полный путь, и перезапустите php-fpm.