PHP-Fehlermeldung auf IIS 7 anzeigen


7

Ich verwende IIS als Webserver auf meinem Entwicklungscomputer für die PHP-Webentwicklung. Oder zumindest versuche ich es.

Wenn in einem PHP-Skript ein Syntaxfehler auftritt und ich diese Datei in meinem Webbrowser öffne, wird nur ein 503 "interner Serverfehler" und die Standard-IIS-Fehlerseite für diesen Fehler angezeigt. Einige Browser öffnen diese Datei überhaupt nicht, möglicherweise aufgrund des 503 HTTP Response Headers.

Ich möchte, dass IIS in diesem Fall genau wie der Apache-Webserver funktioniert: Zeigen Sie die PHP-Datei mit dem Fehler trotzdem an, damit die Fehlermeldung ausgedruckt wird.

Wie kann das gemacht werden?

BEARBEITEN:

PHP-Einstellungen:

display_errors

ist an und

Fehler melden

ist auf E_ALL gesetzt

Antworten:


5

Mit IIS7 werden die Fehler standardmäßig nicht weitergeleitet. Es ist "existierende Antwort", die eingestellt werden muss.

Sie können dies festlegen, indem Sie Folgendes ausführen (stellen Sie sicher, dass Sie {Site-Name} durch Ihren Site-Namen ersetzen).

c:\windows\system32\inetsrv\appcmd.exe set config "{sitename}" -section:system.webServer/httpErrors /existingResponse:"PassThrough" /commit:apphost

Ich habe dies versucht und Sam Cogans Vorschlag - es sagt mir, dass die Änderungen vorgenommen wurden, aber ich erhalte immer noch einen "internen Serverfehler" anstelle des PHP-Protokolls mit Fehlermeldungen. Warum hat es nicht funktioniert?
Max

Deaktivieren Sie auch freundliche Fehlerseiten im IE, falls Sie dies noch nicht getan haben. (Extras-> Internetoptionen-> Erweitert) Dies kann auch die eigentliche Nachricht maskieren und ist wahrscheinlich das sekundäre Problem, auf das Sie jetzt stoßen.
Scott Forsyth - MVP

1

Führen Sie diesen Befehl über die Befehlszeile aus, um detaillierte Fehler für PHP (und andere Sprachen) zu aktivieren:

%windir%\system32\inetsrv\appcmd.exe set config -Section:system.webServer/httpErrors -errorMode:Detailed

Dann

IISReset

1

Eine bewährte Methode wäre, sich "still" in einer Datei anzumelden.

Sie können jedoch beides haben, indem Sie den folgenden Wert in Ihrer php.ini-Datei auf eine Protokolldatei setzen

error_log=<File Location>

1
>> Eine bewährte Methode wäre, sich "still" in einer Datei anzumelden. Nicht unbedingt. Es ist nichts Falsches daran, Fehler auf einem internen Entwicklungsserver anzuzeigen. Mach es einfach nicht auf deinem Live-Server.

1

Fügen Sie die folgenden zwei Zeilen oben in Ihr PHP-Skript ein

ini_set('display_errors','On');

error_reporting(E_ALL | E_STRICT);

0

In Ihrem php.ini-Set:

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
display_errors = On

Und wenn Sie möchten, dass sie protokolliert werden:

log_errors = On

Entschuldigung, ich habe vergessen zu erwähnen: PHP ist so konfiguriert, dass Fehler gemeldet und angezeigt werden. Siehe meine Bearbeitung.
Max
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.