#Симптом и границы применимости
Если сайт работает до перезапуска, а затем получает 502 или permission denied при подключении к *.sock, нужно проверить владельца, группу и способ создания сокета из конфигурации пула PHP-FPM.
Эта инструкция относится к конкретному сайту в панели управления хостингом, когда его обслуживают Nginx, Apache, PHP-FPM или их сочетание. Названия разделов и доступность SSH зависят от установленной панели и прав пользователя; шаги, которых нет в вашем интерфейсе, выполняет администратор сервера.
#Возможные причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Неправильный владелец сокетаСокет создаётся процессом PHP-FPM с группой, недоступной Nginx/Apache | В error_log connect() ... failed (13: Permission denied) | Настроить listen.owner и listen.group либо ACL |
| Несовпадающий путьПанель пересоздала пул под новым именем | Nginx ищет отсутствующий *.sock | Сопоставить fastcgi_pass и listen |
| Остаточные права на каталогРодительский каталог недоступен рабочему пользователю | Права на сокет нормальные, но соединения нет | Проверить выполнение прохода к каталогу |
#Пошаговая диагностика и исправление
- Запишите сообщение об ошибкеОткройте страницу один раз после перезапуска. В журнале сайта найдите точную строку про upstream socket и код ошибки: No such file (2) означает другой сценарий, чем Permission denied (13). Не меняйте chmod без этого различия.
- Найдите текущий путь сокетаВ панели узнайте обработчик PHP и пользовательский пул. По SSH изучите действующую конфигурацию fastcgi_pass/proxy_fcgi и listen соответствующего пула; в разных сборках они расположены в разных каталогах.
- Посмотрите фактические права сокетаЧерез SSH проверьте путь и группу файла сокета и каталог, в котором он появляется. Директория /run может пересоздаваться после перезапуска; поэтому ручной chown сокета исчезнет при следующем запуске.
- Пример для Debian, SSH с административными правамиLinux · Терминал (Bash)КомандаНужен sudoПример для Debian, SSH с административными правами. Если панель использует другой путь, сначала найдите его и подставьте вместо /run/php.
sudo ls -ld /run/phpsudo find /run/php -maxdepth 1 -type s -ls
- Уточните пользователя фронтендаПроверьте, под каким пользователем работают Nginx или Apache, и какой пользователь/группа назначены пулу PHP. Не делайте предположения, что имя всегда www-data: панели создают отдельных пользователей сайтов.
- Исправьте конфигурацию создания сокетаЕсли у пула Unix-сокет, проверьте listen.owner, listen.group, listen.mode или ACL согласно его версии PHP-FPM. Меняйте только параметры выбранного пула через предусмотренное в панели место и сохраните старые значения. Не назначайте сокету 0777.
- Проверьте конфигурацию пулаДо перезапуска выполните тест выбранной версии PHP-FPM; параметры -t и имя бинарника могут отличаться. Если тест не проходит, исправьте конфигурацию и не перезапускайте процесс.
- Дополнительная команда по темеLinux · Терминал (Bash)КомандаНужен sudoПример лишь для установленного php-fpm8.2 на Debian-подобной системе; замените бинарник на фактический. Права администратора.
sudo php-fpm8.2 -t
- Проверьте после контролируемого перезапускаЧерез панель или systemd перезапустите только нужную службу в окно обслуживания. Снова проверьте владельца *.sock и страницу. При повторной ошибке восстановите конфигурацию пула; повторное ручное изменение прав вместо исправления источника не помогает.
#Проверка результата
После перезапуска сокет создаётся с правильным путём и доступными фронтенду правами, сайт отвечает без 502.
#Если проблема осталась
Если сокет существует и права верны, проверьте ограничения SELinux/AppArmor и сообщения journald; если сокет отсутствует, смотрите ошибки старта пула PHP-FPM.
#Безопасный откат
Если после изменения ошибка усилилась, верните сохранённое значение только изменённого параметра и повторно проверьте конфигурацию используемого веб-сервера до применения. Не возвращайте всю базу или весь сервер из резервной копии, если достаточно откатить одну настройку. При отсутствии доступа к нужному уровню обратитесь к администратору с точными временем, адресом, кодом ответа и обезличенными фрагментами журналов.