Wie kann ich PHP-Fehler in IIS7 anzeigen und protokollieren?

29

Wir führen PHP 5.2.5 auf einem IIS 7-Server aus und haben Probleme, PHP-Fehler sichtbar zu machen ... Im Moment, wenn wir einen PHP-Fehler haben, sendet der Server einen 500-Fehler mit der Meldung "Die Seite kann nicht sein wird angezeigt, weil ein interner Serverfehler aufgetreten ist. "

Dies könnte eine gute Einstellung für Produktionswebsites sein, ist aber auf einem Entwicklungsserver ziemlich ärgerlich ... ;-)

Ich habe versucht php.ini, die Anzeige von Fehlern auf dem Bildschirm zu konfigurieren und sie in einem bestimmten Ordner zu protokollieren, aber es scheint, dass der Server alle Fehler zuvor abfängt und sie durch PHP verhindert und verarbeitet ...

Weiß jemand, was wir tun müssen, damit IIS PHP-Fehler auf dem Bildschirm anzeigt? Alle Links, Tipps oder Tutorials zu diesem Thema wäre dankbar!

Ben
quelle
Erstens, stellen Sie sicher , dass Sie diese haben: log_errors=1, error_reporting=-1, log_errors_max_len=0.
Pacerier
ini_set("display_errors", "on");Füge diese Zeilen in die PHP-Datei ein.
ELITE

Antworten:

35

Haben Sie zur Überprüfung die Protokollierung auf error_reporting = E_ALLund display_errors = Onin Ihrem Server eingestellt php.ini? In der Regel reicht dies aus, um diese Fehler in IIS 7 anzuzeigen.

Schauen Sie sich als Nächstes Ihre IIS-Einstellungen an, da möglicherweise nur lokale Fehlermeldungen angezeigt werden. Im IIS 7-Konfigurationseditor befindet sich dies unter system.webServer-> httpErrors. Sie müssen errorMode von DetailedLocalOnly in Detailed ändern. Offensichtlich bedeutet dies jetzt, dass jeder, der auf Ihrer Website surft, den Fehler sehen kann.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Wenn Sie sie lokal halten möchten, können Sie sich alternativ mit Remotedesktop beim Server anmelden und die App von dort aus ausführen, sofern dies möglich ist.

Sam Cogan
quelle
1
Ja, ich habe es überprüft und das ist alles richtig konfiguriert.
Ben
Es wurden weitere Informationen zur Fehlerbehebung hinzugefügt
Sam Cogan,
1
Das Ändern des errorMode auf "Detailed" von "DetailedLocalOnly" hat den Trick getan. Vielen Dank!
Ben
1
Ich musste die Sammlung von HTTP-Fehlern auch unter system.webServer entfernen. Hat erst mit PHP funktioniert.
1
Bitte heben Sie das system.webServermit meinem Blut hervor und fügen Sie den Hinweis hinzu: "Ja, es gibt Combo".
DiGi
2

Ich wollte nur hinzufügen, dass "existingResponse" auf "PassThrough" gesetzt werden sollte. Ohne diese zusätzliche Einstellung habe ich keine echten Fehlermeldungen erhalten.

Bolli
quelle
1
Wo befindet sich diese Einstellung?
Eugene Mala
0

Sie können dies problemlos mit der IIS-Manager-GUI tun. Wählen Sie Ihre Site aus und doppelklicken Sie auf Fehlerseiten. Klicken Sie dann auf "Funktionseinstellungen bearbeiten ..." und wählen Sie die Option "Detaillierte Fehler" anstelle der Standardeinstellung "Detaillierte Fehler für lokale Anforderungen und benutzerdefinierte Fehlerseiten für Remoteanforderungen". Voilà, so einfach ist das!

Jeroen Aarts
quelle
Wo können dann die Protokolle und Fehler angezeigt werden?
JukEboX
0

Ich musste in die Einstellungen auf dem Webserver in die PHP-Konfiguration gehen und dort gibt es eine Einstellung für die Fehlermeldung und ist standardmäßig auf Produktion eingestellt. Musste es auch nach Änderung der php.ini und des Vorschlags hier auf Entwicklung umstellen. Ich benutze iis 7.5 auf 2008 R2.

naps1saps
quelle