Alexander (HH): Sammelaktion: Fehlermeldungen von PHP

Beitrag lesen

Moin Moin!

Nur mal so als Idee:

Die Fehlermeldung besteht ja nicht nur aus der Meldung an sich, sondern auch noch aus betroffenem Script und Zeilennummer (und ggf. noch mehr).

Ich könnte mir vorstellen, daß das Zusammentragen dieser Information in einer Funktion geschieht.

Aus langjähriger Erfahrung mit alter, chaotisch gewachsener Software und aus Andeutungen in diversen Artikeln über PHP: Nein, ich glaube nicht, dass es EINE zentrale Funktion in PHP gibt, durch die alle Fehlermeldungen laufen. Wahrscheinlich gibt es so etwa drei bis fünf häufig benutzte Wege und noch so etwa 10 bis 20 Schleichwege. Das wäre jedenfalls meine Grundannahme.

Bevor ich mir die Mühe machen würde, im PHP-Source herumzuwühlen, würde ich erst einmal die vorhandene Dokumentation sichten. Eine Übersicht aller Fehlermeldungen sollte Teil der Dokumentation sein. Zumindest ist die das in Perl: perldiag.

Das Durchwühlen des Source würde ich automatisieren: Im Source sollte es außer Warn- und Fehlermeldungen eigentlich nur noch PHP-Keywords und ein paar Namen von dynamisch nachgeladenen Libraries und Funktionen geben. Vielleicht noch ein paar "magic numbers" in String-Form. Schritt 1 wäre also, ALLE String-Konstanten aus dem Source zu fischen. Dann darüber uniq laufen lassen. Dann diejenigen rauswerfen, die als Keywords in der Doku gelistet sind (List of Function Aliases, List of Reserved Words, List of Resource Types, List of Parser Tokens). Danach ist Handarbeit angesagt.

Ich vermute, dass PHP auch Fehlerstrings aus gelinkten Libraries ausgibt. Die der libc kann man (wenigstens auf Linux-, BSD- und MacOSX-Systemen) nach #include <errno.h> aus const char *sys_errlist[] lesen, die Länge dieses Arrays ist in int sys_nerr zu finden. Was andere Libraries angeht: RTFM.

Den Ansatz, PHP-Meldungen aus dem Forum oder dem Rest des Internet zu sammeln, halte ich für wenig sinnvoll. Es wird genügend Leute geben, die Schrott posten, schon allein, weil sie lieber die Meldung falsch abtippen statt sie zu kopieren. Es wird jede Menge Redundanzen geben, und etwas exotischere Meldungen werden gar nicht auftauchen. Außerdem werden Spaßvögel falsche Meldungen liefern.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".