Ich aktualisiere Nginx auf 1.4.7 und PHP auf 5.5.12 . Danach habe ich den 502-Fehler erhalten . Bevor ich aktualisiere, funktioniert alles einwandfrei.
nginx-error.log
2014/05/03 13:27:41 [crit] 4202#0: *1 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: xx.xxx.xx.xx, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "xx.xx.xx.xx"
nginx.conf
user www www;
worker_processes 1;
location / {
root /usr/home/user/public_html;
index index.php index.html index.htm;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/home/user/public_html$fastcgi_script_name;
include fastcgi_params;
}
Antworten:
Ich hatte einen ähnlichen Fehler nach dem PHP-Update. PHP hat einen Sicherheitsfehler behoben, bei dem
o
dierw
Berechtigung für die Socket-Datei bestand./etc/php5/fpm/pool.d/www.conf
oder/etc/php/7.0/fpm/pool.d/www.conf
, abhängig von Ihrer Version.Kommentieren Sie alle Berechtigungszeilen aus, z.
Starten Sie fpm neu -
sudo service php5-fpm restart
odersudo service php7.0-fpm restart
Hinweis : Wenn Ihr Webserver als anderer Benutzer als www-data ausgeführt wird, müssen Sie die
www.conf
Datei entsprechend aktualisierenquelle
sudo usermod -aG www-data nginx
ermöglicht nginx den Zugriff auf die DateiAlle derzeit hier erwähnten Korrekturen aktivieren die Sicherheitslücke im Grunde wieder.
Am Ende habe ich meiner PHP-FPM-Konfigurationsdatei die folgenden Zeilen hinzugefügt.
Stellen Sie sicher, dass www-data tatsächlich der Benutzer ist, unter dem der Nginx-Worker ausgeführt wird. Für Debian sind es standardmäßig www-Daten.
Auf diese Weise wird das Sicherheitsproblem, das durch diese Änderung behoben werden sollte, nicht aktiviert .
quelle
ps aux|grep nginx
/var/run/php5-fpm.sock
, da es bereits von erstellt wurdewww-data
. Nur ein Heads-up ...Die Lösung von @ Xander funktioniert, bleibt aber nach einem Neustart nicht bestehen.
Ich fand , dass ich ändern musste ,
listen.mode
um0660
in/etc/php5/fpm/pool.d/www.conf
.Beispiel von www.conf:
Bearbeiten: Per @Chris Burgess habe ich dies auf die sicherere Methode geändert.
Ich habe den Kommentar für listen.mode, .group und .owner entfernt:
/ var / run Enthält nur Informationen zum laufenden System seit dem letzten Start, z. B. aktuell angemeldete Benutzer und laufende Daemons. ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#Directory_structure ).
Randnotiz:
Meine
php5-fpm -v
Berichte :PHP 5.4.28-1+deb.sury.org~precise+1
. Das Problem trat auch nach einem kürzlich durchgeführten Update auf.quelle
listen.acl_groups
ist gesetztlisten.owner
undlisten.group
wird ignoriert. Ich habe eingestelltlisten.acl_groups =
, dann ist das 502 / Berechtigungsproblem verschwunden. Nachdem ich dielisten.
Zeilen wie oben auskommentiert hatte , blieb das 502-Problem bestehen undsystemctl status php-fpm
zeigte die Warnung anWARNING: [pool www] ACL set, listen.owner = 'nobody' is ignored
.Wenn Sie alles in diesem Beitrag ausprobiert haben, aber keinen Erfolg damit haben, PHP zum Laufen zu bringen, wurde dies für meinen Fall behoben:
Stellen Sie sicher, dass diese Zeilen in /etc/php5/fpm/pool.d/www.conf nicht kommentiert sind:
Stellen Sie sicher, dass / etc / nginx / fastcgi_params folgendermaßen aussieht:
Diese beiden Zeilen fehlten in meinen / etc / nginx / fastcgi_params. Stellen Sie sicher, dass sie vorhanden sind!
Starten Sie dann php5-fpm und nginx neu. Sollte den Trick machen.
quelle
Tatsächlich sollte "listen.mode" lauten: "0660" und nicht "0666", da "Andere beschreibbar" oder "Andere lesbar" hier niemals eine gute Wahl ist.
Versuchen Sie also herauszufinden, welcher Benutzer / welche Gruppe Ihr Webserver ausführt. Ich benutze CentOs und es läuft als Benutzer "nginx". Also füge es deiner php-fpm.conf hinzu:
endlich php-fpm neu starten
quelle
www-data
.Überprüfen Sie, welcher Benutzer nginx ausführt. Ab Ubuntu 12.04 wird nginx von einem nginx-Benutzer ausgeführt, der kein Mitglied der www-Datengruppe ist.
Ein Neustart von nginx- und php5-fpm-Daemons löst das Problem.
quelle
Alternativ zur Erweiterung der Berechtigungen in Ihrer PHP-Konfiguration können Sie den in Ihrer Nginx-Konfiguration angegebenen Benutzer ändern.
In der ersten Zeile Ihres nginx.conf-Auszugs oben werden der Benutzer und die Gruppe als www bzw. www angegeben.
In der Zwischenzeit gibt Ihre PHP-Konfiguration wahrscheinlich einen Benutzer und eine Gruppe von WWW-Daten an:
Sie können die Zeile in Ihrer nginx.conf in eine der folgenden ändern:
quelle
Gegebenenfalls müssen auch Ihre individuellen FPM-Pools berücksichtigt werden.
Ich konnte nicht herausfinden, warum keine dieser Antworten heute für mich funktionierte. Dies war für mich ein Set-and-Forget-Szenario gewesen, bei dem ich vergessen hatte, dass listen.user und listen.group pro Pool dupliziert wurden.
Wenn Sie wie ich Pools für verschiedene Benutzerkonten verwendet haben, in denen jedes Benutzerkonto seine FPM-Prozesse und -Sockets besitzt, funktioniert es einfach nicht, nur die Standardkonfigurationsoptionen listen.owner und listen.group auf 'nginx' zu setzen. Und natürlich ist es auch nicht akzeptabel, 'Nginx' sie alle besitzen zu lassen.
Stellen Sie für jeden Pool sicher, dass
Andernfalls können Sie das Eigentum des Pools und dergleichen in Ruhe lassen.
quelle
Ich habe diesen Fehler heute erneut erhalten, als ich meinen Computer (mit Updates für PHP) unter Ubuntu 14.04 aktualisiert habe . Die Distributionskonfigurationsdatei
/etc/php5/fpm/pool.d/www.conf
ist in Ordnung und erfordert derzeit keine Änderungen.Ich habe folgende Fehler gefunden:
Das Merkwürdige war , dass ich 2 Seiten ausgeführt , dass PHP-FPM auf dieser Maschine eines verwenden fein ausgeführt wurden und die andere (a Tiny Tiny RSS - Installation) gab mir ein 502, wo beide ausgeführt wurden fein vor .
Ich habe beide Konfigurationsdateien verglichen und festgestellt, dass diese
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
für die betroffene Site fehlten.Beide Konfigurationsdateien enthalten jetzt den folgenden Block und laufen wieder einwandfrei:
Aktualisieren
Es ist zu beachten, dass Ubuntu zwei Fastcgi-bezogene Parameterdateien sowie ein Konfigurations-Snippet liefert, das seit Vivid und auch in der PPA- Version verfügbar ist . Die Lösung wurde entsprechend aktualisiert.
Diff der fastcgi-Parameterdateien:
Konfigurations-Snippet in
/etc/nginx/snippets/fastcgi-php.conf
quelle
Die folgende einfache Lösung hat bei mir funktioniert und mögliche Berechtigungsprobleme mit dem Socket umgangen.
Setzen Sie in Ihrer Nginx-Konfiguration fastcgi_pass auf:
Anstatt
Dies muss mit dem Parameter listen = in /etc/php5/fpm/pool.d/www.conf übereinstimmen. Setzen Sie dies daher auch auf:
Starten Sie dann php5-fpm und nginx neu
Und
Weitere Informationen finden Sie unter: https://wildlyinaccurate.com/solving-502-bad-gateway-with-nginx-php-fpm/
quelle
Das Problem in meinem Fall war, dass der Nginx-Webserver als Benutzer nginx und der Pool als Benutzer www-data ausgeführt wurde.
Ich habe das Problem gelöst, indem ich den Benutzer geändert habe, unter dem Nginx in der
/etc/nginx/nginx.conf
Datei ausgeführt wird (könnte auf Ihrem System anders sein, meins ist Ubuntu 16.04.1).Veränderung:
user nginx;
zu:
user www-data;
Starten Sie dann Nginx neu:
service nginx restart
quelle
Einfach aber funktioniert ..
quelle
Ich habe das gleiche Problem unter Amazon Linux AMI 2016.09 (Centos 7) behoben, indem ich die folgenden Schritte ausgeführt habe.
Öffnen Sie Ihre www.conf- Dateien (Beispiel: sudo nano /etc/php-fpm.d/www.conf). Suchen Sie zuletzt die Zeilen, in denen listen.owner und listen.group festgelegt sind, und ändern Sie ihre Werte von "Nobody" in "nginx" ":
Zuletzt suchen Sie die Zeilen, die den Benutzer und die Gruppe festlegen, und ändern ihre Werte von "Apache" in "Nginx":
Starten Sie php-fpm neu (sudo service php-fpm restart)
quelle
Das Wichtigste dabei ist, welcher Benutzer Nginx verwendet, und Sie müssen es auch angeben
in Ihrer nginx.conf
in Ihrer www.conf
In Ihrem Fall ist der Benutzer und die Gruppe "www". Ersetzen Sie sie einfach.
quelle
Wenn Sie einen unterschiedlichen Pool pro Benutzer haben, stellen Sie sicher, dass Benutzer und Gruppe in der Konfigurationsdatei richtig eingestellt sind. Sie finden den nginx-Benutzer in der Datei /etc/nginx/nginx.conf. Die Nginx-Gruppe ist dieselbe wie der Nginx-Benutzer.
quelle
Überprüfen Sie auch SELINUX (/ etc / selinux):
schalte es aus:
quelle
In meinem Fall lief php-fpm überhaupt nicht, also musste ich nur den Dienst starten 😂
quelle
Siehe nur
/etc/php5/php-fpm.conf pid = /var/run/php5-fpm.pid
IS PID-DateiIm Ordner
/etc/php5/fpm/pool.d/www.conf
listen = /var/run/php5-fpm.sock
IS SOCKET-DateiWenn Sie gleich pid hören (
pid = /var/run/php5-fpm.sock and listen = /var/run/php5-fpm.sock
) -> falsche Einstellungen und beenden Sie die Einstellung/etc/php5/fpm/pool.d/www.conf
quelle
Unter CentOS (und wahrscheinlich Red Hat und Fedora) befindet sich die Datei, in die die Berechtigungen geändert werden sollen, unter:
quelle
Nach dem Upgrade von Ubuntu 14.04 auf Ubuntu 16.04 habe ich einen weiteren Grund für diesen Fehler gefunden, den ich vorher noch nicht gesehen habe.
Während des Upgrades hatte ich irgendwie meine ausführbare Datei php5-fpm verloren. Alle Konfigurationsdateien waren intakt und es dauerte eine Weile, bis mir klar wurde, dass
service php5-fpm start
ein Prozess nicht wirklich gestartet wurde, da keine Fehler angezeigt wurden.Mein Moment des Erwachens war, als ich bemerkte, dass keine Socket-Datei darin war
/var/run/php5-fpm.sock
, wie es sein sollte, noch tatnetstat -an
Prozesse zeigte, die den Port abhörten, den ich als Alternative versuchte, um dieses Problem zu lösen. Da die Datei / usr / sbin / php5-fpm ebenfalls nicht vorhanden war, war ich endlich auf dem richtigen Weg.Um dieses Problem zu lösen, habe ich PHP von Version 5.5 auf 7.0 aktualisiert.
apt-get install php-fpm
tat den Trick als Nebeneffekt. Danach und nach der Installation anderer notwendiger Pakete war alles wieder normal.Diese Upgrade-Lösung kann eigene Probleme haben . Da sich PHP ziemlich weiterentwickelt hat, ist es möglich, dass die Software auf unvorstellbare Weise kaputt geht. Obwohl ich diesen Weg eingeschlagen habe, möchten Sie vielleicht die Version, die Sie mögen, noch eine Weile behalten.
Glücklicherweise scheint es dafür einen guten Weg zu geben , wie auf der Windows-Website "Anpassen" beschrieben:
So ordentlich die Lösung auch sein mag, das habe ich nicht versucht. Ich gehe davon aus, dass mir die nächsten Tage sagen werden, ob ich es hätte tun sollen.
quelle
Ich hatte den ähnlichen Fehler.
Alle Empfehlungen haben nicht geholfen.
Der einzige Ersatz für WWW-Daten durch Nginx hat geholfen:
/var/www/php/fpm/pool.d/www.conf
quelle
Ich habe das Betriebssystem auf meinem Server einige Male geändert, um das komfortabelste System zu erhalten.
Früher hat es die meiste Zeit sehr gut funktioniert, aber zuletzt habe ich diesen 502 Gateway-Fehler erhalten.
Ich benutze einen PHP-Fpm-Socket für jedes Konto, anstatt für alle das gleiche zu behalten. Wenn also eine abstürzt, laufen zumindest die anderen Anwendungen weiter.
Früher hatte ich Benutzer- und Gruppen-WWW-Daten. Dies änderte sich jedoch auf meinem Debian 8 mit dem neuesten Nginx 1.8 und php5-fpm.
Der Standardbenutzer ist nginx, ebenso wie die Gruppe. Um dies sicherzustellen, überprüfen Sie am besten die Dateien / etc / group und / etc / passwd. Diese können nicht lügen.
Dort habe ich festgestellt, dass ich jetzt Nginx in beiden habe und keine WWW-Daten mehr.
Vielleicht kann dies einigen Leuten helfen, die immer noch versuchen herauszufinden, warum die Fehlermeldung immer wieder auftaucht.
Es hat bei mir funktioniert.
quelle
An diejenigen, die alles in diesem Thread ausprobiert haben und trotzdem feststeckten: Dies hat mein Problem gelöst. Ich habe /usr/local/nginx/conf/nginx.conf aktualisiert
Kommentieren Sie die Zeile aus
user
mach es
www-data
so, dass es wird:user www-data;
Speichern Sie es (Root-Zugriff erforderlich)
Starten Sie nginx neu
quelle
Wenn Sie Erklärungen haben
und
In verschiedenen Konfigurationsdateien wird root Eigentümer dieser Datei.
quelle