web-dev-qa-db-de.com

Verbindung von Peer zurückgesetzt: mod_fcgid: Fehler beim Lesen der Daten vom FastCGI-Server

Ich habe ein Problem mit PHP), bei dem meine App versucht, eine PHP-Sicherungsdatei auszuführen und plötzlich den HTTP-Fehler 500-Code erhält. Ich habe die Protokolle überprüft und das, was darin steht.

[Di Aug 28 14:17:28 2012] [warn] [client xxxx] (104) Verbindung von Peer zurückgesetzt: mod_fcgid: Fehler beim Lesen der Daten vom FastCGI-Server, Referer: http://example.com/backup /backup.php
[Di Aug 28 14:17:28 2012] [Fehler] [Client xxxx] Vorzeitiges Ende der Skript-Header: backup.php, referer: http://example.com/backup/backup .php

Weiß jemand, wie man das behebt? Ich stecke hier wirklich fest und kann im Internet keine Lösung finden.

Hoffe, jeder konnte sein Wissen teilen.

Vielen Dank. James

47
James Wise

Ich habe es geschafft, dies durch Hinzufügen von FcgidBusyTimeout zu lösen. Nur für den Fall, wenn jemand ein ähnliches Problem mit mir hat.

Hier sind meine Einstellungen in meiner Apache.conf:

<VirtualHost *:80>
.......
<IfModule mod_fcgid.c>
FcgidBusyTimeout 3600
</IfModule>
</VirtualHost>
26
James Wise

Ich hatte sehr ähnliche Fehler in den Apache2-Protokolldateien:

(104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
Premature end of script headers: phpinfo.php

Nachdem ich die Wrapper-Skripte und Apache2-Einstellungen überprüft hatte, stellte ich fest, dass/var/www/keine entsprechenden Berechtigungen hatte. Daher konnten die FCGId-Wrapper-Skripte überhaupt nicht gelesen werden.

ls -la /var/www
drwxrws---  5 www-data     www-data     4096 Oct  7 11:17 .

Für mein Szenario wurde natürlich chmod -o+rx /var/www Benötigt, da die verwendeten SuExec-Benutzer nicht Mitglied der Benutzergruppe www-data Sind - und sie sollten natürlich aus Sicherheitsgründen nicht Mitglied sein.

11
Oliver Hader

wenn Sie eine PHP Version <5.3.0 installieren möchten, müssen Sie ersetzen

--enable-cgi

mit:

--enable-fastcgi

in deinem ./configure Anweisung, Auszug aus dem php.net-Dokument:

--enable-fastcgi

Wenn dies aktiviert ist, wird das CGI-Modul auch mit Unterstützung für FastCGI erstellt. Verfügbar seit PHP 4.3.0

Ab PHP 5.3.0 existiert dieses Argument nicht mehr und wird stattdessen von --enable-cgi aktiviert. Nach der Kompilierung wird das ./php-cgi -v sollte so aussehen:

PHP 5.2.17 (cgi-fcgi) (built: Jul  9 2013 18:28:12)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

HINWEIS DER (cgi-fcgi)

4
reiner23fx

Das berühmte Moodle-Skript "replace.php" kann diese Situation ebenfalls erzeugen. Bei mir hat es ewig gedauert, bis es ausgeführt wurde, und dann ist es mit einer 500-Nachricht im Browser und der obigen Fehlermeldung in meiner Apache-Fehlerprotokolldatei fehlgeschlagen.

Ich habe die @ james-weise Antwort weiterverfolgt: FcgidBusy ist lesbar in der Apache-Dokumentation beschrieben. Ich habe Folgendes versucht: Die Zeit, die Apache für die Ausführung meines Skripts benötigt, wurde verdoppelt, indem die folgende Zeile in /etc/Apache2/mods-available/fcgid.conf eingefügt wurde

FcgidBusyTimeout 600

Dann habe ich Apache neu gestartet und versucht, mein replace.php-Skript erneut auszuführen.

Glücklicherweise lief die Skriptinstanz dieses Mal vollständig, so dass dies für meine Zwecke eine Lösung darstellte.

2
owenmck

In CentOS-Versionen ist suexec so kompiliert, dass es nur in/var/www ausgeführt wird. Wenn Sie versuchen, einen DocumentRoot an einer anderen Stelle einzurichten, müssen Sie ihn neu kompilieren. Die Fehler im Apache-Protokoll lauten: (104) Verbindung durch Peer zurückgesetzt: mod_fcgid: Fehler beim Lesen der Daten vom FastCGI-Server. Vorzeitiges Ende der Skript-Header: php5.fcgi

2
Jivko Todorov

Nicht in dies fragt den Fragesteller aber oft:

Was bedeutet der "vorzeitige Ende der Skript-Header" Fehler?

Dieser Fehler bedeutet, dass der FCGI-Aufruf unerwartet beendet wurde.

In einigen Fällen bedeutet dies, dass das Skript "backup.php" abgestürzt ist.

Wie kann man das beheben?

Wenn der Absturz eines Skripts die Ursache war, beheben Sie das Skript, damit es nicht abstürzt. Dann ist auch dieser Fehler behoben. Um herauszufinden, ob und warum ein Skript abstürzt, müssen Sie debuggen es. Zum Beispiel können Sie das PHP Fehlerprotokoll überprüfen. In STDERR protokollierte Fehler gehen normalerweise in den Fehlerhandler der FCGI.

2
hakre

Ich bin auf diesen beim Debuggen eines VirtualMin/Apache-Fehlers gestoßen.

In meinem Fall starte ich virtualmin und hatte in der php.ini meiner virtuellen Maschine safe_mode = On.

Im Fehlerprotokoll meiner virtuellen Maschine wurde die fcgi-Verbindung von Peer zurückgesetzt: mod_fcgid: Fehler beim Lesen der Daten vom FastCGI-Server

In meinem Apache-Hauptfehlerprotokoll wurde Folgendes angezeigt: PHP Schwerwiegender Fehler: Die Direktive 'safe_mode' ist in PHP= in Unknown in Zeile 0 nicht mehr verfügbar

In meinem Fall habe ich einfach safe_mode = Off in meiner php.ini gesetzt und Apache neu gestartet.

stackoverflow.com/questions/18683177/where-to-start-with-deprecated-directive-safe-mode-on-line-0-in-Apache-error

2
Lance

Ich hatte dieses Problem und erkannte, dass die Datei cgi-bin/php-fcgi keine Ausführungsrechte hatte.

Es hatte den 644-Modus, während es den 755-Modus haben sollte.

Das Einstellen des richtigen Modus war unmöglich (wahrscheinlich, weil die Datei geöffnet war oder etwas anderes), also habe ich diese Datei aus einem anderen Domänenverzeichnis kopiert, in dem bereits die richtigen Rechte festgelegt waren, und das hat alles behoben.

2
sEver

Ich hatte das gleiche Problem mit lang laufenden Skripten mit den Fehlermeldungen "Vorzeitiges Ende der Skript-Header: index.php" und "Zurücksetzen der Verbindung durch Peer: mod_fcgid: Fehler beim Lesen der Daten vom FastCGI-Server" in error_log. Nach stundenlangem Testen hilft mir dies (CentOS 6, PHP-FPM 7, Plesk 12.5.30):

bearbeiten Sie die Konfigurationsdatei:

/etc/httpd/conf.d/fcgid.conf

Stellen Sie eine höhere Laufzeit ein. In meinem Fall 600 Sekunden

erstelle den neuen eintrag:

FcgidBusyTimeout 600

passen Sie folgende Einträge an:

FcgidIOTimeout 600

FcgidConnectTimeout 600

starten Sie httpd neu:

dienst httpd Neustart

2
joruf81

Installiere einfach php5-cgi in debian

Sudo apt-get php5-cgi installieren

in Centos

Sudo yum php5-cgi installieren
1
Mancy

Ich habe die maximale Ausführungszeit auf 600 Sekunden erhöht.

plesk 17 - domain effected

1
Stephen Murray

Ich hatte das gleiche Problem mit einer anderen und einfachen Lösung.

Problem

Ich habe PHP 5.6 nach der akzeptierten Antwort auf diese Frage auf Ask Ubunt installiert. Nachdem ich Virtualmin verwendet habe, um einen bestimmten virtuellen Server von PHP) zu wechseln = 5.5 bis PHP 5.6, ich habe einen 500 Internal Server Error erhalten und hatte die gleichen Einträge im Apache-Fehlerprotokoll:

[Tue Jul 03 16:15:22.131051 2018] [fcgid:warn] [pid 24262] (104)Connection reset by peer: [client 10.20.30.40:23700] mod_fcgid: error reading data from FastCGI server
[Tue Jul 03 16:15:22.131101 2018] [core:error] [pid 24262] [client 10.20.30.40:23700] End of script output before headers: index.php

Ursache

Einfach: Ich habe das Paket php5.6-cgi Nicht installiert .

Fix

Das Installieren des Pakets und das Neuladen von Apache lösten das Problem:

  • Sudo apt-get install php5.6-cgi Wenn Sie PHP 5.6 verwenden

  • Sudo apt-get install php5-cgi Wenn Sie eine andere PHP 5 Version verwenden

  • Sudo apt-get install php7.0-cgi Wenn Sie PHP 7 verwenden

Verwenden Sie dann service Apache2 reload, Um die Konfiguration zu übernehmen.

1
user5626466

Überprüfen Sie/var/lib/php/session und seine Berechtigungen. Dieses Verzeichnis sollte vom Benutzer beschreibbar sein, damit die Sitzung gespeichert werden kann

0
mangia

Wie bereits erwähnt, kann dies auf Probleme mit der Berechtigung des fcgi-Handlers zurückzuführen sein. Wenn Sie suexec verwenden, vergessen Sie nicht zu prüfen, ob Apache dieses Modul aktiviert hat.

0
kK-Storm

In meinem Fall habe ich eine benutzerdefinierte Erweiterung für meine PHP= Dateien verwendet und musste /etc/Apache2/conf-available/php7.2-fpm.conf Bearbeiten und den folgenden Code hinzufügen:

    <FilesMatch ".+\.YOUR_CUSTOM_EXTENSION$">
        SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
    </FilesMatch>
0
Novo

Wenn Sie sich auf einem gemeinsam genutzten Server wie mir befinden, hat der Host angegeben, dass die Speicherbeschränkungen überschritten wurden. Daher werden Skripts abgebrochen, was zu dem in diesem Fehler genannten "vorzeitigen Ende der Skript-Header" führt. Sie haben mich darauf hingewiesen:

https://help.dreamhost.com/hc/en-us/articles/216540488-Why-did-procwatch-kill-processes-on-my-Shared-serv

Angesichts einer Zunahme des Gedächtnisses gingen die Probleme verloren. Ich denke, ein Backup-Plugin Updraft auf wordpress) war in seinen Pflichten/Einstellungen vielleicht zu eifrig.

0
edindubai