2009-01-07 6 views
5

Wir migrieren auf einen neuen Server unter Windows 2003 und IIS 6. Wenn mein PHP-Code läuft, gibt es eine Warnung für eine bestimmte Zeile (die ich gerade erwarte) aber wird in Kürze repariert). Wenn es jedoch die Warnung trifft, bricht es die Verarbeitung sofort ab und gibt einen 500-Fehler im HTTP-Header zurück. Normalerweise würde ich erwarten, dass PHP die Warnung ausgibt, aber das Skript weiter verarbeitet.PHP-Warnungen führen zum Stillstand des Skripts auf IIS unter FastCGI

Gibt es etwas in der Konfiguration für IIS, FastCGI oder PHP, das 500 Fehler zurückgibt, wenn PHP eine Warnung trifft?

Zur Klarstellung: Ich möchte die Warnungen nicht unterdrücken; Ich möchte, dass sie angezeigt werden. Ich möchte nicht, dass das Skript die Verarbeitung von Warnungen stoppt.

Antwort

10

Das Problem herausgefunden. log_errors in php.ini wurde auf On festgelegt, aber error_log wurde nicht festgelegt. Das hat dazu geführt, dass PHP alles stoppt. Nach der Einstellung von display_errors auf on werden jetzt die Warnungen angezeigt, sodass ich sehen kann, wo in der Ausgabe Dinge liegen.

Dieser Thread war hilfreich: http://forums.iis.net/p/1146102/1856222.aspx#1856222

+0

Also, was stellen Sie 'error_log' zu? Bitte fügen Sie das in Ihre Antwort ein, um anderen zu helfen. –

+0

Wow, du bist ein Genie! – alexander7567

0

Ich weiß nicht über IIS oder FastCGI, aber afaik php hat keine solche Option. Sie können jedoch error_reporting (in Ihrem php.ini) auf

E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR 

Warnungen weg gehen zu machen.

0

Das hängt auch sehr von Ihrem PHP-Code ab, wenn Sie etwas kompliziertes innerhalb des Codes machen und ein Fehler auftritt, werfen Webserver manchmal 500 Fehler. Ich würde Ihnen vorschlagen:

  1. eine @ aufs Spiel setzen, um den Fehler zu unterdrücken, das heißt:

    $ x = @ my_function ($ y);

  2. Finden Sie in Ihren Web-Server-Protokolle für die genaue Fehlermeldung, die Sie erhalten, dann posten Sie es hier und vielleicht könnten wir Ihnen eine bessere Lösung anbieten.