PHP erzeugt eine völlig weiße Seite, keine Fehler, Protokolle oder Header.

StackOverflow https://stackoverflow.com/questions/1944105

  •  20-09-2019
  •  | 
  •  

Frage

Während einige PHP-Code auf meinem privaten WAMP PC Ich laufe plötzlich eine leere Antwort vom Server erhalten - keine Antwort tatsächlich. Keine Header, keine Daten, nichts in den PHP-Fehlerprotokolle, nada. Ich neu gestartet Apache und PHP, aber immer noch nichts. Ich weiß, php funktioniert, weil ich gerade fein andere PHP-Skripten zugreifen kann.

Firebug meldet keine Header? Bytes, und es dauert nur 163ms zu "load" (es ist also kein Timeout). Ich dachte an einem schnellen Speicherverbrauch - aber ich meine PC-Speicher überwacht und es keine Spitzen zeigt. Fehler und Ausnahmen sind bis jetzt gut gearbeitet.

Was in der Welt?

max_execution_time = 30 ;
max_input_time = 60 ; 
max_input_nesting_level = 64 ; 
memory_limit = 500M ;

error_reporting = E_ALL | E_NOTICE | E_STRICT
display_errors = On
log_errors = On

: EDIT:

Ich würde nicht @ mit einem Zehn-Fuß-Pol berühren. Ich denke, die Ruby-Jungs werfen, dass da drin so Programmierern würde PHP fallen.

Wie auch immer, ich aktivierte xdebug und es hat nicht ausgegeben keine grind-Dateien. Dann nahm ich zombat Rat und legte einen die () am oberen Rand der Seite und es funktionierte. Ich denke, dass ich nur ein paar sehr seltsam Code, völlig PHP tötet. Selbst wenn Fehler aufgetreten sind deaktiviert oder mit @ unterdrückt sollte ich noch einen Header vom Server mit dem leeren Inhalt werden immer wieder!

Wenn ich mehr finden werde ich Post zurück.

War es hilfreich?

Lösung 7

vermutete ich die Antwort auf dieses Problem - es stellt sich heraus, dass PHP 5.2.5 können keine rekursiven Tod behandeln.

<?php

class A
{
    public function __construct()
    {
        new B;
    }
}

class B 
{
    public function __construct()
    {
        new A;
    }
}

new A;

print 'Loaded Class A';

Keine Header, Fehler, Inhalt, Protokolle, xdebug Dumps, Speicher Spikes, CPU-Spitzen, Server abstürzt, oder irgendetwas. Nach ca. 150ms PHP nur „Enden“. Schräge.

Andere Tipps

Führen Sie die Seite aus einer Konsole und Sie werden die Fehlermeldung erhalten.

// nix
php yourFile.php

// Windows
c:\path\to\php.exe yourFile.php

Sie könnten eine .htaccess-Datei in diesem Verzeichnis haben, die Fehlerberichterstattung geändert hat.

Zur Prüfung, versucht explizit diese Optionen an der Spitze der PHP-Skript einstellen, die Ihnen Probleme gibt.

ini_set('display_errors',1);
error_reporting(E_ALL);

Ich habe auch dies durch übereifrige Anti-Viren-Pakete verursacht gesehen. Einige enthalten Web-Proxy-Software-Filter Internet und E-Mail. In diesem Fall würde die Seite nur Last ins Unendliche fortsetzen, aber nie abgeschlossen.

Vorsicht vor dem @ (Fehlerunterdrückung) Operator, wenn Sie einen Syntaxfehler auf einer Linie mit @ PHP haben leise zu verlassen.

Um diesen Zustand zu ermitteln, verwenden Sie set_error_handler und schreiben Sie Ihren eigenen Fehler-Handler, werden Sie noch für Fehler aufgerufen, wo @ verwendet wird.

Sie sagen andere PHP-Skripten arbeiten, so dass gibt es wahrscheinlich kein Problem Apache. Sie erscheinen auch alle Ihre Protokolleinstellungen haben korrigieren und nichts angemeldet ist immer, so ist es durchaus möglich, PHP normalerweise verlässt, bevor es irgendetwas gibt. Eine der folgenden könnte wahr sein:

  • A fehl am Platz exit() Aussage? Sie wurden auf dem Code arbeiten, vielleicht kannst du einen schnellen exit() etwas heraus zu überprüfen, und vergessen, es zu entfernen?
  • don.neufeld Idee für die Verwendung des @ Betreiber der Überprüfung, die alle Fehlermeldungen unterdrückt, hat Kosten mich Stunden Zeit Debugging in der Vergangenheit. Auf jeden Fall etwas zu suchen.

In Situationen wie dieser, die Debugging-Ansatz des armen Mannes kann ein paar schnelle Ergebnisse. Werfen Sie einen exit('wtf'); in als die erste Zeile in dem Skript in Frage hier. Heißt das laufen? Die Ergebnisse dieses Tests sofort ausgeschlossen ist, alle Arten von Möglichkeiten, egal, was das Ergebnis ist. Wenn Sie keine Ausgabe erhalten, dann ist es wahrscheinlich ein Server-Level-Problem (Konfiguration, schlechte Modul, usw.), obwohl jede höhere Ebene Pufferung vorsichtig sein. Wenn Sie eine Ausgabe zu tun bekommen, dann wissen Sie, der Server in Ordnung ist, und die Ausgabe liegt tiefer in Ihrem Skript, in diesem Fall können Sie den exit() Anruf nach unten ein paar Zeilen, spülen und wiederholen bewegen. Nicht eine elegante Art und Weise zu debuggen, aber es ist schnell und schmutzig, und Sie werden wahrscheinlich das Problem in ein paar Minuten finden.

Überprüfen Sie php.ini Einstellung für short_open_tag = On oder short_open_tag = Aus

Die wahrscheinlichste Sache hier ist, dass Apache abstürzt. Schauen Sie durch den Apache-Fehlerprotokoll vielleicht, oder einen Debugger anhängen.

Details auf der Suche Debuggen der Apache / PHP-Prozess auf Windows finden Sie unter finden http://bugs.php.net/bugs-generating-backtrace-win32.php

Zur Aktivierung Fehleranzeige in Ihrem PHP-Code, falls Sie nichts sehen können, einfügen

ini_set('display_errors',1); 
error_reporting(E_ALL);

Beispiel, wo diese potentialy erspart Ihnen viel Zeit:

Dieser Code in einer joomla default.php Template-Datei zeigt eine leere Seite ohne Fehler msg ohne Linien 20 und 21

17  <?php if ($params->get('title_article_linkable')) { ?>
18      <a href="<?php 
19          $url = JRoute::_(ContentHelperRoute::getArticleRoute($item->id,$item->catid));
20          ini_set('display_errors',1);
21          error_reporting(E_ALL);
22          echo $url; ?>">
23      <?php echo $this->item->title; ?></a> // should be $item->title !!
24  <?phpLL000000 } else { ?>
25      <?php echo $item->title; ?>
26  <?php } ?>

Ausgabe:

eingeben Bild Beschreibung hier

Überprüfen Sie das Ereignisprotokoll.

Wenn dies geschieht, ist es in der Regel lohnt sich Ausschneiden so viel wie möglich des Codes und zu sehen, wenn Sie etwas auf der Seite bekommen zu zeigen.

Es könnte zu einem unverschlossenen Zitat irgendwo im Code zurückzuführen sein, oder eine nicht geschlossene Klammer. Dies könnte dazu führen, die echo-Anweisung als Text oder in einer anderen Funktion betrachtet werden, etc.

Und während alle Fehler, sollen Sie werden gemeldet werden, habe ich festgestellt, dass nicht alle Fehler tatsächlich gemeldet werden, wahrscheinlich wegen der ini-Einstellungen auf einem gemeinsamen Host, der meine Reichweite ist aus.

Kommentar, ist nicht immer genug - nicht sicher, warum nicht. Wenn dies geschieht, ich habe es in der Regel finden schnellste zu sein, nur die Seite zu kopieren, und langsam Ausschneiden und Einfügen Abschnitte zurück, bis ich den Fehler finden, nach dem ich mich für einen dummen Tippfehler treten kann.

haben überprüfen Sie Ihre Dateien für ?> Tags schließen? Oder was noch wichtiger ist jeder Leerzeichen nach ihnen ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top