Globales Exeption-Logging? (Error Log)

Mik3e

Erfahrenes Mitglied
Mahlzeit zusammen,

Wisst Ihr vielleicht ob es möglich ist, PHP so zu konfigurieren, dass alle Warnings und Error Exceptions in einem LOG File mitgeloggt werden?

Das hat einfach den Hintergrund, dass man dadurch bei der Entwicklung versteckte Fehlermeldungen einfacher finden kann.

Typisches Beispiel:
PHP:
if (is_array($x)) {
    $x[1]=0  // Liefert Fehlermeldung, da Semikolon fehlt
}
header("location: http://www.google.com");
Theoretisch sieht man diese Fehlermeldung auch (da der Fehler ausgegeben wird und damit die header() Anweisung nicht mehr funktioniert.)

Mir ist nur aufgefallen, dass dem nicht immer so ist. Dürfte wahrscheinlich mit der Verarbeitungszeit zusammenhängen (header() wird ausgeführt, bevor die Fehlermeldung ausgeliefert werden kann).

Würde es sowas wie ein "globales Exception Log" geben, in die der Preprocessor alle Fehlermeldungen schreibt, sieht man den Fehler natürlich.

Vielleicht habt Ihr eine Idee,
LG
Mike
 
Also jetzt muss ich doch mal fragen, was du eigentlich beruflichst machst.

Du stellst immer die selbstverständlichsten PHP/MYSQL -Befehle/Funktionen usw. in Frage.
Wofür brauchst denn immer solche "Eigenmeiereien"?

Zum Thema:
Dein Beispiel gibt einen Parse-Error. Immer. Beweise mir das Gegenteil! :-)
 
@Jörg:
Du stellst immer die selbstverständlichsten PHP/MYSQL -Befehle/Funktionen usw. in Frage.

Du kennst Ihn sicher besser als ich. Aber in diesem Fall ist sein Anliegen durchaus berechtigt. Immerhin könnte man auftauchende Fehlermeldungen auf der Seite als Sicherheitsproblem interpretieren. Daher wird eigentlich gern empfohlen, die Fehlermeldungen nie im Klartext auf der Seite anzeigen zu lassen, sondern besser in eine Datei zu loggen.

Das empfehle ich in meinen Onlinekursen in der Lektion über "Sicherheit mit PHP" übrigens auch so ;-)

Gruß Marian
 
Ok, der Zeitpunkt war schlecht überlegt, ich hätte diesen "Vorwurf" in seinem letzten Thema bringen sollen.
Was war das noch?
Ach ja, nen eigenen Schlüssel für eine mySQL-Tabelle entwickeln, da ja die vorhandenen Funktionen eh Müll sind.

Nee, Mik3e, ich will mich nicht lustig machen. Mich interessiert einfach, wie man überhaupt darauf kommen kann. (Unzuverlässigkeit des Unix-Timestamps fällt mir noch spontan ein....)
 
@Jörg:
Eigenmeierreien
Kann es Dir gerne beweisen:

PHP:
ob_start("ob_gzhandler");
$stamp1 = explode(' ',microtime());
echo 'WARNING'; // Warning, dass von PHP erzeugt wird.
header('location: http://www.test.com');
ob_end_flush();

-> Und voila.. Wir haben eine Warning Exeption, die im Nirvana verschwindet, da durch die Komprimierung die header() Funktion offensichtlich vorgezogen und damit nicht unterbrochen wird.

Und ich gehe stark davon aus, dass das keine Eigenmeiereien sind, da diese Anwenung doch sehr oft vorkommt (ich denke nur an Weiterleitung nach POST um einen Reload zu unterbinden).

Das alles hat nichts mit "in Frage stellen" zu tun. Gibt es jetzt (wie ich schon gelesen habe) einen globalen Error und Warning Log, endet dieses Warning nicht als versteckter Bug in der Produktivversion. Ganz einfach.
 
@Jörg die zweite :-)
Ich entwickle Systeme, die einfach den Rahmen von "Privat" oder "Hobby" sprengen. Genaugenommen sind es Module für verschiedene Businessprozesse.

Und zu der Key-Frage:
Das war weniger auf PHP bezogen, sondern allgemein eine Logik-Frage. Der Schlüssel wird auch in ein Organisches-Barcode System integriert und muss notfalls auch manuell eingegeben werden können. Hat man jetzt einen Schlüssel mit 32 Zeichen Länge, ist das ein Problem. Dennoch muss er (theoretisch) mehrere hundert Request pro Sekunde verkraften und "relativ" endlos sein (normale Datentypen stoßen naturgemäß irgendwann an Ihre Grenzen).

Aber mit der UNIX Timestamp, RMD + INT[2] Lösung bin ich sehr zufrieden. Und dafür gibt es sicher keine vorgefertigte Funktion :o)
 
Ich sag ja, mich interessiert es halt. Soll kein Gemecker sein.

Dem obigen Beispiel kann ich keinen Fehler entnehmen. Aber wenn es nur um die Verdeutlichung gehen soll, daß an dieser Stelle ein Waring ensteht, dann hab ich das jetzt verstanden. :-)

Ich entwickle Systeme, die einfach den Rahmen von "Privat" oder "Hobby" sprengen. Genaugenommen sind es Module für verschiedene Businessprozesse.
Supi, jetzt weiss ichs. Nee, das jenes größere Ausmaße hat ist mir klar, deswegen interessiert es mich ja. Ich handle auch beruflich mit Datenbanken jenseits der "berühmten" 100^5 Grenze.
 
Habs auch nicht als Angriff verstanden :)
Das Problem liegt bei dem Beispiel einfach in der Komprimierung...
 
Zurück