Rolf B: Probleme mit der Funktion file()

Beitrag lesen

Hallo Error,

du bekommst lediglich den Fehlertyp, der den E_-Konstanten entspricht. Also 2 für E_WARNING, 1 für E_ERROR oder 8 für E_NOTICE.

Eine Nummerierung der Fehler, so dass man konkret auf einen bestimmten Fehler reagieren kann, scheint nicht vorgesehen, d.h. wenn Du auf Texte abfragst und eine neue PHP Version den Text ändert, bist Du gekniffen.

Es ist aber auch sehr selten, dass eine Differnzierung zwischen Fehlerursachen sinnvoll ist. Wenn Du zwischen "Datei existiert nicht" und "Datei kann nicht gelesen werden" unterscheiden willst, dann prüfe lieber exakt diesen Sachverhalt im Dateisystem. Auch wenn es dabei zu Ungenauigkeiten kommen kann, weil sich zwischen Prüfung und Verwendung die Welt geändert hat. Bei der access.log Datei des Apache kann es zum Beispiel vorkommen, dass Du die Datei auf Existenz prüfst, und JUST NUN ist der Moment, wo logrotate die Logdatei umschaltet. Dafür wird die alte access.log umbenannt und eine leere access.log angelegt. Exakt dazwischen gibt's einen Moment, wo die Datei nicht existiert. Sehr unwahrscheinlich, dass Du diesen Moment triffst, aber nicht auszuschließen. Es hängt dann auch an der logrotate-Konfiguration, ob der Apache während der Rotation gestoppt wird oder nicht. Bei uns zum Beispiel ist das nicht so, da wird umbenannt und dann dem Apache per postrotate-Script gesagt, er soll sich neu laden.

Rolf

--
sumpsi - posui - obstruxi