Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

PHP Fehlermeldungen anzeigen und steuern mit error_reporting

Sie befinden sich: Home > Php Tutorial > PHP Fehlermeldungen...

PHP Fehlermeldungen anzeigen und steuern mit error_reporting


Eintrag am:  02.09.2010
Hits / Besucher:  28287
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Die Funktion error_reporting() legt fest, welche Arten von Fehlern PHP melden soll. Zusammen mit display_errors bildet sie das Grundgerüst der Fehlerkonfiguration. Während der Entwicklung sollten alle Fehler sichtbar sein, auf einem Live-Server dagegen dürfen Fehlermeldungen niemals im Browser erscheinen.

Schnellstart: Alle Fehler anzeigen

Die folgenden zwei Zeilen am Anfang eines Scripts schalten die volle Fehleranzeige ein. Das ist die empfohlene Konfiguration für die lokale Entwicklung:

<?php

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

/* Ab hier werden alle Fehler im Browser angezeigt */
?>

E_ALL aktiviert sämtliche Fehlerstufen. display_errors sorgt dafür, dass die Meldungen tatsächlich im Browser ausgegeben werden. Ohne diese Einstellung werden Fehler zwar erkannt, aber nicht angezeigt.

Die wichtigsten Fehlerstufen

PHP unterscheidet verschiedene Schweregrade. Die in der Praxis relevantesten sind:

<?php

/* Fatale Fehler: Script bricht ab */
error_reporting(E_ERROR);

/* Warnungen: Script läuft weiter */
error_reporting(E_WARNING);

/* Hinweise: mögliche Probleme */
error_reporting(E_NOTICE);

/* Veralteter Code: funktioniert noch,
wird aber in Zukunft entfernt */
error_reporting(E_DEPRECATED);

/* Alles zusammen */
error_reporting(E_ALL);
?>

E_ERROR stoppt das Script sofort, etwa bei einem Aufruf einer nicht existierenden Funktion. E_WARNING meldet Probleme, lässt das Script aber weiterlaufen. E_NOTICE zeigt Hinweise wie nicht initialisierte Variablen. E_DEPRECATED warnt vor Funktionen, die in künftigen PHP-Versionen entfernt werden.

Fehlerstufen kombinieren

Mit dem Bitwise-OR-Operator (|) lassen sich mehrere Stufen kombinieren. Mit dem Bitwise-NOT-Operator (~) können einzelne Stufen ausgeschlossen werden:

<?php

/* Nur Fehler und Warnungen */
error_reporting(E_ERROR | E_WARNING);

/* Alles außer Hinweise */
error_reporting(E_ALL & ~E_NOTICE);

/* Alles außer Hinweise und Deprecated */
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
?>

Die letzte Variante wird häufig bei der Migration auf eine neue PHP-Version verwendet, wenn zunächst nur die kritischen Fehler behoben werden sollen.

Entwicklung vs. Produktion

Auf einem Live-Server dürfen Fehlermeldungen nicht im Browser erscheinen. Sie können sensible Informationen wie Dateipfade oder Datenbank-Zugangsdaten preisgeben. Stattdessen sollten Fehler in eine Logdatei geschrieben werden:

<?php

/* Produktion: Fehler loggen, nicht anzeigen */
error_reporting(E_ALL);
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');
?>

So werden alle Fehler in die angegebene Datei geschrieben und können dort vom Administrator eingesehen werden, ohne dass Besucher etwas davon sehen.

Konfiguration über php.ini

Die zuverlässigste Methode ist die Konfiguration in der php.ini. Dort gelten die Einstellungen für alle Scripts, und auch Fehler werden erkannt, die bereits beim Parsen auftreten (vor dem ersten error_reporting()-Aufruf):

; Entwicklung (php.ini)

error_reporting = E_ALL
display_errors = On

; Produktion (php.ini)
error_reporting = E_ALL
display_errors = Off
log_errors = On

Wer keinen Zugriff auf die php.ini hat (etwa auf Shared Hosting), kann die Einstellungen auch in einer .htaccess-Datei oder per ini_set() im Script setzen. Per Script lassen sich allerdings nur Fehler steuern, die nach dem Aufruf auftreten.

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.