|
Erstellt ein Array
Prüft, ob eine Datei oder ein Verzeichnis existiert
Liest die gesamte Datei in einen String
Gets all configuration options
Sets the value of a configuration option
E-
Löscht eine Datei |
Tutorials - Fortgeschritten - Error Management - Fehler LogbuchTutorials - FortgeschrittenError Management: Fehler Logbuch
error_reporting( NULL ) schaltet generell jede Form von Fehleranzeige aus. Und nicht nur das, jegliche Fehlerbehandlung wird unmöglich gemacht. Auch eventuellen mitloggen oder so... Is doof. Besser: <?php ini_set("display_errors", 0); ?> Fehler werden nicht mehr angezeigt, aber du kannst trotzdem sehen, was für Fehler du gemacht hast: Und dadefür bräuchtest am besten eine Datei, wo alles mitgeloggt wird. Is sogar einfacher als gedacht: <?php ini_set("log_errors", 1); /* Logging "an" schalten */ ini_set("error_log", $_SERVER['DOCUMENT_ROOT'] . "/errorlog.txt"); /* Log-Datei angeben */ ?> Ab sofort werden die Fehler in der Datei ".../errorlog.txt" gesammelt. Die Datei muss nicht existieren, sie wird von allein angelegt. Also insgesamt:
<?php include("errorlog.php"); echo "Wir erzeugen einen Fehler..."; dieseFunktionGibtsNicht("blah"); /* müsste eigentlich einen Fehler geben */ echo "Das Script läuft nicht bis hierher... wird durch den Fehler abgebrochen"; /* wird nicht mehr ausgegeben */ ?> Aber die Datei errorlog.txt hat nun folgenden Eintrag: [29-Mar-2006 16:48:52] PHP Fatal error: Call to undefined function dieseFunktionGibtsNicht() in script.php on line 2 Schick. Und kein Besucher wird mit PHP-Gebrabbel genervt. Apropos "schick"... Ein paar Zeilen in der errorlog.php hinzugefügt und du bekommst die logdatei immer gleich zugemailt, wenn deine Page Script entdeckt, dass ein Fehler drinsteht: <?php $errorlogfile = $_SERVER['DOCUMENT_ROOT'] . "/errorlog.txt"; ini_set("display_errors", 0); ini_set("log_errors", 1); ini_set("error_log", $errorlogfile); if(file_exists($errorlogfile)) { $errors = file_get_contents($errorlogfile); /* Inhalt wird gelesen */ @unlink($errorlogfile); /* Datei wird gelöscht */ mail("meine@email.de", "ERROR-LOG $_SERVER[HTTP_HOST]", $errors); /* Mail wird gesendet */ } ?> Das kannst du mit diesem kurzen Script testen: <?php $ini = ini_get_all(); $check = array("display_errors", "log_errors", "error_log"); foreach($check as $iniset) { $access = $ini[$iniset]['access']; echo "<b>$iniset ändern:</b><br />\n"; if($access == 7) echo "ja, überall (per per ini_set(), php.ini, .htaccess oder httpd.conf)<br />\n"; elseif($access == 0) echo "nein, nicht änderbar<br />\n"; else { if($access & 1) echo "ja, per ini_set()<br />\n"; if($access & 2) echo "ja, per php.ini, .htaccess oder httpd.conf<br />\n"; if($access & 4) echo "ja, per php.ini oder httpd.conf<br />\n"; } echo "<br /><br />"; } exit; ?> |