2009-03-25 11 views
2

ich PHP bin mit 4, der einzige Weg, den ich kenne, um einen Fehler zu verursachen und alles stoppen wird sterben() aufrufen. Aber für den Fall laufe ich in den Fehler später und kann mich nicht erinnern, wo seine Herkunft aus möchte ich die Seite und die Zeilennummer angeben, die der Form() trat auf (wie auch andere PHP-Fehler zu tun). Gibt es eine Möglichkeit, dies zu tun?Angeben der Seite/Linie beim Werfen des Die()?

Danke!

+0

Nicht relevant für Ihre Frage, aber bitte nicht mit PHP4. Es hat sein "Ende des Lebens" erreicht und erhält keine offiziellen Patches mehr. – Oli

+0

Ich stimme @Oli zu - es ist Zeit für ein Upgrade! – Greg

+0

@oli danke Ich plane ein Upgrade, wenn ich Server mit meinem Host aktualisiere. –

Antwort

6

Sie sollten den Blick in magic constants.

echo __LINE__; // Line number 

können Sie auch error_log() laufen Fehler in das Protokoll ruhig zu senden.

4

Der einfachste Weg ist, zu verwenden:

echo __FILE__ . ": line " . __LINE__; 
die(); 

Wenn Sie PHP5 verwenden würden, könnten Sie auch Ausnahmen verwenden:

throw new Exception("My error message!"); 

Der Stack-Trace wird die gesamte Call-Stack zeigen und die Zeile das wurde auf geworfen.

(EDIT: Dank [@ John Isaacs] und [@Emil H] für mich darüber informiert, dass Ausnahmen nicht bis PHP5 PHP wurden hinzugefügt)

+0

wusste nicht über Ausnahmen, danke! – helloandre

+0

Ich glaube, Ausnahmen wurden in v5 hinzugefügt. –

+0

Korrigieren, Ausnahmen sind nicht vor Version 5 verfügbar. –

2

Neben @Jukka Dahlbom und @ Ólafur Waage Vorschläge Sie könnte auch die Verwendung von debug_backtrace() in Betracht ziehen.

+0

Sehr leider eine 'die' ausgelöste Abschaltung Handler wird den' die' in der Backtrace nicht hat. D: –

4

Ich denke, Sie sollten trigger_error() verwenden, um eine E_USER_ERROR oder E_USER_WARNING zu generieren. Dadurch können Sie das Verhalten im Detail steuern. Zum Beispiel können Sie festlegen, ob bei allen mit error_reporting() gezeigt werden die Nachrichten sollten, oder die E_USER_WARNING behandeln: set_error_handler explizit s() verwenden.

+0

+1, wusste vorher nicht von trigger_error. –

Verwandte Themen