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

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

Wir führen PHP 5.2.5 auf einem IIS 7-Server aus und haben Probleme, PHP-Fehler sichtbar zu machen. Derzeit sendet der Server bei jedem PHP-Fehler einen 500-Fehler mit der Meldung „Die Seite kann nicht angezeigt werden, da ein interner Serverfehler aufgetreten ist.“ zurück.

Dies mag für Produktionswebsites eine gute Einstellung sein, auf einem Entwicklungsserver ist es jedoch ziemlich ärgerlich … ;-)

Ich habe versucht, die Konfiguration so php.inizu konfigurieren, dass Fehler auf dem Bildschirm angezeigt und in einem bestimmten Ordner protokolliert werden, aber es scheint, dass der Server alle Fehler vorher abfängt und eine Verarbeitung durch PHP verhindert …

Weiß jemand, was wir tun müssen, damit IIS PHP-Fehler auf dem Bildschirm anzeigt? Ich bin für alle Links, Tipps oder Tutorials zu diesem Thema dankbar!

Antwort1

Nur um sicherzugehen: Haben Sie die Protokollierung auf error_reporting = E_ALLund display_errors = Onin Ihrem eingestellt php.ini? Normalerweise reicht dies aus, um diese Fehler in IIS 7 anzuzeigen.

Sehen Sie sich als Nächstes Ihre IIS-Einstellungen an. Möglicherweise sind dort nur lokal Fehlermeldungen angezeigt. Im IIS 7-Konfigurationseditor finden Sie diese unter system.webServer->httpErrors. Sie müssen errorMode von DetailedLocalOnly auf Detailed ändern. Das bedeutet natürlich, dass jeder, der Ihre Site besucht, den Fehler sehen kann.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

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

Antwort2

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

Antwort3

Dies können Sie ganz einfach über die IIS Manager-Benutzeroberfläche 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 Standardoption „Detaillierte Fehler für lokale Anforderungen und benutzerdefinierte Fehlerseiten für Remoteanforderungen“. Voilà, so einfach ist das!

Antwort4

Ich habe das probiert, aber es hat nicht funktioniert. Insbesondere im „Konfigurationseditor“ musste ich „vorhandene Antwort“ auf „auto“ belassen.

Ich habe jedoch festgestellt, dass Sie bei Verwendung von FastCGI in den IIS-Manager -> Standardwebsite -> FastCGI -> gehen c:\php\php-cgi-.exeund dann „Bearbeiten …“ auswählen müssen.

Unter "Standard error mode" wechseln Sie ReturnGeneric500zuReturnStdErrIn500

Dadurch werden die PHP-Fehler angezeigt, wenn Sie sie in PHP.INI oder über Einstellungen im PHP-Code aktiviert haben.

verwandte Informationen