PHP-FPM - Fehler 503 - Versuch, eine Verbindung zum Unix-Domain-Socket herzustellen, ist fehlgeschlagen

PHP-FPM - Fehler 503 - Versuch, eine Verbindung zum Unix-Domain-Socket herzustellen, ist fehlgeschlagen

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/runlöste das Problem.

Beim Betrachten des Quellcodes für mod_proxyhabe 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.confund 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/?

verwandte Informationen