![PHP-FPM - Fehler 503 - Versuch, eine Verbindung zum Unix-Domain-Socket herzustellen, ist fehlgeschlagen](https://rvso.com/image/717734/PHP-FPM%20-%20Fehler%20503%20-%20Versuch%2C%20eine%20Verbindung%20zum%20Unix-Domain-Socket%20herzustellen%2C%20ist%20fehlgeschlagen.png)
Ich erhalte auf dem Server diese Fehler (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 (*)
Socket vorhanden, ich habe versucht, die Berechtigungen auf 777 zu ändern, aber es funktioniert nicht:
ls -l /tmp/php56-fpm.sock
-rw-rw----. 1 apache apache 0 Feb 17 16:11 /tmp/php56-fpm.sock
PHP-FPM www.conf-Listeneinstellung (die vollständige Datei finden Sie hier:https://pastebin.com/uD5GsMna):
listen=/tmp/php56-fpm.sock
Virtueller Host:
<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>
Meine Konfigurationsdatei ist (httpd.conf):https://pastebin.com/XS6cDuFQ
Ich habe versucht, den Socket zu ändern, die Berechtigung in Apache:Apache-Benutzer zu ändern, aber ich weiß nicht, wo das Problem liegt.
Danke
Antwort1
Dies wird möglicherweise durch die systemd-Konfiguration auf Apache verursacht, auf Centos 7 beispielsweise ist der Dienst standardmäßig wie folgt konfiguriert:
PrivateTmp=true
Das bedeutet, dass es sein eigenes Unterverzeichnis in /tmp erhält, das als /tmp sichtbar ist, sodass es keine von anderen Programmen hinzugefügten Dateien in /tmp sehen kann. Die Lösung wäre, /tmp nicht für Ihre php-fpm-Sockets zu verwenden (sicherer als das obige auf „false“ zu setzen).
(Mir ist klar, dass in mindestens einem Fall ein Debian-Derivat verwendet wird, aber dieses verwendet auch systemd!)
Paulie.
Antwort2
Ändern Sie Benutzer und Gruppe zu Ihrem aktuellen Apache-Benutzer
/etc/php-fpm.d/www.conf
** Benutzer und Gruppe müssen identisch sein in/etc/http/conf/http.conf
Dann ausführen
chown -R user.user /run/php-fpm/www.conf
** Ändern Sie Ihren Benutzer
Ich glaube, das Obige gilt für CentOS, da ich ein Debian-Typ bin. Dies ist tatsächlich eine der Lösungen für das Problem „503-Fehler, Dienst nicht verfügbar“, das durch das Berechtigungsproblem mit PHP8-Socks verursacht wird. Ihr Sock in Apache befindet sich also unter:
chown -R Benutzer.Benutzer /var/run/php/php8.1-fpm.sock
Antwort3
Ich hatte gerade das gleiche Problem, nachdem ich Apache von 2.4.10 auf 2.4.24 aktualisiert hatte. Mit dem alten Apache funktionierte die Verbindung zu fcgi mit einem Socket in /tmp
, während der neue Apache den Fehler ausgab (2)No such file or directory
. Das Verschieben des Sockets /var/run
löste das Problem.
Beim Betrachten des Quellcodes für mod_proxy
habe ich festgestellt, dass bei neueren Apache-Versionen der Pfad relativ zu dem als angegebenen sein sollte DefaultRuntimeDir
. In meiner Konfiguration ist dies in festgelegt /etc/apache2/apache2.conf
und es werden auch einige Definitionen aus verwendet /etc/apache2/envvars
.
Antwort4
Ich habe dieses Problem gelöst, als ich
/var/run/php5-fpm.sock
anstelle von /tmp/
und es funktioniert. Aber warum kann man stattdessen nicht einen anderen Ordner verwenden /var/run/
?