![PHP-FPM - Ошибка 503 - Попытка подключения к сокету домена Unix не удалась](https://rvso.com/image/717734/PHP-FPM%20-%20%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0%20503%20-%20%D0%9F%D0%BE%D0%BF%D1%8B%D1%82%D0%BA%D0%B0%20%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BA%20%D1%81%D0%BE%D0%BA%D0%B5%D1%82%D1%83%20%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B0%20Unix%20%D0%BD%D0%B5%20%D1%83%D0%B4%D0%B0%D0%BB%D0%B0%D1%81%D1%8C.png)
Я получаю на сервере следующие ошибки (CentOs 7):
[proxy:debug] proxy_util.c(2209): [client 80.251.245.153:61902] AH00944: connecting fcgi://127.0.0.1/data/webs/dev/index.php to 127.0.0.1:8000
[proxy:debug] proxy_util.c(2246): [client 80.251.245.153:61902] AH02545: fcgi: has determined UDS as /tmp/php56-fpm.sock
[proxy:debug] proxy_util.c(2418): [client 80.251.245.153:61902] AH00947: connected /data/webs/dev/index.php to httpd-UDS:0
[proxy:error] (2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /tmp/php56-fpm.sock (*) failed
[proxy_fcgi:error] AH01079: failed to make connection to backend: httpd-UDS
[proxy:debug] proxy_util.c(2171): AH00943: FCGI: has released connection for (*)
Сокет существует, я пробовал изменить разрешения на 777, но не работает:
ls -l /tmp/php56-fpm.sock
-rw-rw----. 1 apache apache 0 Feb 17 16:11 /tmp/php56-fpm.sock
Настройка прослушивания PHP-FPM www.conf (полный файл здесь:https://pastebin.com/uD5GsMna):
прослушивать=/tmp/php56-fpm.sock
Виртуальный хост:
<VirtualHost *:80>
ServerName dev.stavebninyfranek.com
DocumentRoot "/data/webs/dev"
<FilesMatch "\.php$">
SetHandler "proxy:unix:/tmp/php56-fpm.sock|fcgi://127.0.0.1"
</FilesMatch>
</VirtualHost>
Мои конфигурационные файлы (httpd.conf):https://pastebin.com/XS6cDuFQ
Я попробовал сменить сокет, изменить права доступа на apache:apache user, но не знаю, в чем проблема.
Спасибо
решение1
Потенциально это вызвано конфигурацией systemd на Apache. Например, на Centos 7 по умолчанию служба настроена следующим образом:
PrivateTmp=true
Это означает, что он получает свой собственный подкаталог в /tmp, видимый как /tmp, поэтому он не может видеть файлы в /tmp, добавленные другими программами. Решением было бы не использовать /tmp для ваших сокетов php-fpm (более безопасно, чем установка выше на false).
(Я понимаю, что по крайней мере в одном случае используется производная от Debian, но она также использует systemd!)
Поли.
решение2
измените пользователя и группу на текущего пользователя Apache
/etc/php-fpm.d/www.conf
** пользователь и группа должны быть одинаковыми/etc/http/conf/http.conf
Затем выполните
chown -R user.user /run/php-fpm/www.conf
** измените на своего пользователя
Я полагаю, что вышесказанное относится к centOS, потому что я парень Debian. На самом деле это одно из решений проблемы «503 error service unavailable», вызванной проблемой с разрешением php8 sock. Таким образом, ваш sock в apache будет по адресу:
chown -R пользователь.пользователь /var/run/php/php8.1-fpm.sock
решение3
У меня была такая же проблема после обновления apache с 2.4.10 до 2.4.24. Со старым apache подключение к fcgi работало с сокетом в /tmp
, а новый apache выдавал ошибку (2)No such file or directory
. Перемещение сокета в /var/run
решило проблему.
Просматривая исходный код для mod_proxy
, я обнаружил, что на более новом apache путь должен быть относительным к указанному как DefaultRuntimeDir
. В моей конфигурации это установлено в , /etc/apache2/apache2.conf
а также используется некоторое определение из /etc/apache2/envvars
.
решение4
Я решил эту проблему, когда использовал
/var/run/php5-fpm.sock
вместо /tmp/
и это работает. Но почему нельзя использовать какую-то другую папку вместо /var/run/
?