FastCGI: „Kommunikation mit Server abgebrochen: Lesen fehlgeschlagen“ nur für eine bestimmte Datei

FastCGI: „Kommunikation mit Server abgebrochen: Lesen fehlgeschlagen“ nur für eine bestimmte Datei

Verwandte Frage: FastCGI- und Apache 500-Fehler treten zeitweise auf

Die Lösung funktioniert bei mir nicht.


Das Problem:

Ich habe eine Laravel 5.1 Anwendung (lief auf anderen Servern ohne Probleme) auf einem neuenUbuntu 14.04-ServermitApache 2.4.7und PHP durchPHP-FPM.

Solange in der Anwendung keine bestimmte Datei aufgerufen wird, funktioniert alles einwandfrei:

$compiledPath = __DIR__.'/cache/compiled.php';

if (file_exists($compiledPath)) {
    require $compiledPath; // this causes a "500 Internal Server Error"
}

Es ist eine Laravel-spezifische Dateiautomatisch erstelltvom Framework selbst, um die Dinge ein wenig zu beschleunigen (es ist also kein Fehler in meinem Code), es existiert wirklich und ich habe volle Zugriffsberechtigung. Es istca. 600kBin der Größe. Wenn ich es entferne, funktioniert alles einwandfrei. Aber wenn ich Laravel anweise, es erneut zu erstellen und dann eine beliebige Route der Anwendung anklicke, erhalte ich einen „500 Internal Server Error“ mit den folgenden Protokolleinträgen:

[fastcgi:error] [pid 14334] (104)Verbindung vom Peer zurückgesetzt: [client xxx.xxx.xxx.xxx:41395] FastCGI: Kommunikation mit Server "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com" abgebrochen: Lesen fehlgeschlagen

[fastcgi:error] [pid 14334] [client xxx.xxx.xxx.xxx:41395] FastCGI: unvollständige Header (0 Bytes) empfangen vom Server "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com"

[fastcgi:error] [pid 14334] (104)Verbindung vom Peer zurückgesetzt: [client xxx.xxx.xxx.xxx:41395] FastCGI: Kommunikation mit Server "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com" abgebrochen: Lesen fehlgeschlagen

[fastcgi:error] [pid 14334] [client xxx.xxx.xxx.xxx:41395] FastCGI: unvollständige Header (0 Bytes) empfangen vom Server "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com"

Was ich versucht habe:

Ich habe die Lösung in der oben erwähnten verwandten Frage ausprobiert, die auch die meisten anderen Vorschläge zu diesem Problem darstellt, die ich finden konnte: Spielen Sie mit den allgemeinen PHP-FPM-Einstellungen herum, um mehr Ressourcen zuzuweisen. Die akzeptierte Antwort erwähnt auch die Möglichkeit, FastCGI vollständig aufzugeben, aber das möchte ich nicht. Also habe ich mit den Werten herumgespielt, aber ohne Erfolg.

Da ich der Einzige bin, der ihn verwendet, wird der Server überhaupt nicht ausgelastet. Ich bezweifle also wirklich, dass es ein Problem mit den verfügbaren Ressourcen ist (es ist ein VPS mit 12 GB RAM).Könnte es etwas mit der Dateigröße zu tun haben?Es ist die einzige so große PHP-Datei.

Ich konnte das Problem auf 2 verschiedenen Servern mit der gleichen Konfiguration reproduzieren. Es funktioniertenichttritt auf einem Ubuntu 12.04-Server mit Apache 2.2 mit FastCGI auf.

Meine aktuelle Konfiguration:

PHP-FPM:

pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 0

<IfModule mod_fastcgi.c>
    ...
    Alias /php5-fcgi /var/www/....
    FastCgiExternalServer /var/www/.... -idle-timeout 300 -socket /var/lib/php5-fpm/web1.sock -pass-header Authorization
</IfModule>

php.ini

memory_limit = 512M
output_buffering = on

Antwort1

Wenn PHP nur bei bestimmten Quelldateien abstürzt, liegt das wahrscheinlich daran, dass ein PHP-Codebeschleuniger (Opcode-Cache) wie Xcache, APC oder eAccelerator Probleme mit der Datei hat. Dies kann auf Fehler im Beschleuniger oder in PHP selbst zurückzuführen sein.

Sie können versuchen, Ihr Skript über die PHP-Befehlszeilenschnittstelle ( php-cliBefehl) auszuführen, da die PHP-CLI keine Beschleuniger verwendet.

verwandte Informationen