PHP-CGI hat begonnen, leere Seiten bereitzustellen

8

Mein PHP-CGI hat ohne ersichtlichen Grund damit begonnen, leere Seiten bereitzustellen, bis ich den Prozess neu gestartet habe.

Ich möchte wissen warum.

Leider hat die "Produktions" -Konfigurationsdatei von PHP standardmäßig kein error_log. In meinem Nginx-Fehlerprotokoll wurden auch keine PHP-Fehler angezeigt. Dies ist wahrscheinlich ein hoffnungsloser Fall, aber ich frage nur für den Fall.

Hier ist mein Setup

  • Nginx 0.8.2
  • PHP 5.2.6-3ubuntu4.1 mit Suhosin-Patch 0.9.6.2 (cli) (erstellt: 23. April 2009, 14:37:14 Uhr)
  • PHP APC 3.0.19-2
  • spawn-fcgi v1.6.2 (ipv6) - fastcgi-Wrapper von lighttpd

Irgendwelche Ideen, was den Fehler verursacht haben könnte?

Aktualisieren

Ich glaube, ich habe das Problem isoliert. Ich habe Monit verwendet, um PHP automatisch neu zu starten, wenn es leer wird. Meine PHP-Fehlerprotokolle sind leer.

Aber ich habe herausgefunden, dass wenn ich ein Wordpress-Plugin namens WP-SuperCache deaktiviert habe, mein PHP nicht alle ~ 10 Stunden zurückgesetzt wird. Bisher läuft mein PHP seit 3 ​​Tagen hintereinander. Hat jemand irgendwelche Vorschläge dazu?

Unbekannt
quelle

Antworten:

2

Supercache generiert vollständig zwischengespeicherte Versionen von Seiten sowie einige andere interne Zwischenspeicherungen. In Situationen mit hoher Auslastung kann es zu Zeitproblemen kommen. Ich würde Ihren Cache-Ordner überprüfen, um sicherzustellen, dass er keine leeren Dateien enthält. In diesem Fall liegt wahrscheinlich ein Problem mit der Dateisperrung vor. Das Lösen eines solchen Problems kann schwierig sein und erfordert wahrscheinlich das Öffnen eines Bug-Tickets, da es wahrscheinlich ein Problem mit dem Code selbst ist.

Eric
quelle
1

Haben Sie versucht, den fcgi-Dienst tatsächlich zu stoppen und erneut zu starten, anstatt ihn neu zu starten? Ich habe ähnliche seltsame Dinge beim Neustart von fcgi erlebt

Seanl
quelle
1
Das Problem kam nicht vom Neustart. Es passierte einfach spontan über Nacht, als ich ein paar Besucher von einem Link-Dump namens Reddit bekam.
Unbekannt
1

Überprüfen Sie den Antwortstatus Ihrer Anforderungen, wenn dies erneut auftritt (z. B. curl -i). Wenn der Status nicht 200 ist, überprüfen Sie Ihre Fehlerseiten (insbesondere die für die angezeigte Fehlernummer) und stellen Sie sicher, dass dies nicht der Fall ist Stellen Sie die Umleitung auf eine Weise ein, die eine Endlosschleife verursachen kann.

Wenn der Antwortstatus 200 lautet, überprüfen Sie, ob die Antwort einen anderen Text als die HTTP-Header enthält.


quelle
Ich denke, ich hätte das tun sollen, aber ich habe PHP bereits neu gestartet, damit die Leute die Seite sehen können. Ich habe keine Fehler in meinem Serverprotokoll gesehen.
Unbekannt
1

Keine Antwort, aber Vorschlag - ersetzen Sie spawn-fcgi durch php-fpm, es ist anpassbarer.

PS. Vielleicht haben Sie eine spezielle 50x-Fehlerseitenumleitung in nginx.conf

UPD: Heute bin ich auf ein ähnliches Problem gestoßen, als nginx + php anfing, leere Seiten zu bedienen. Meine Forschung hat gezeigt, dass es leere Seite gesendet hat, was auch immer PHP eine Ausnahme warf. Möglicherweise handelt es sich um eine Art php.ini-Direktive, die anstelle eines Fehlers leer dient. Ich sollte Protokolle untersuchen und etc ... abwischen.

UPD2: Sehen Sie sich Ihre php.ini an, es gibt 2 Parameter, die Sie ändern müssen, um PHP-Fehler zu sehen:

error_reporting = E_ALL & ~E_NOTICE
display_errors = On
SaveTheRbtz
quelle
0

Die Klausel "spontan über Nacht passiert" klingt interessant ... ist es möglich, dass Ihr Host damit begonnen hat, dem gesamten Datenverkehr zusätzliche Status-Header hinzuzufügen? Wenn ja, sehen Sie möglicherweise diesen Fehler:

Joomla! PHP, FastCGI, leere Seite und doppelter Header 'Status'

DreadPirateShawn
quelle
Das glaube ich nicht. Ich kontrolliere den Host.
Unbekannt