PHP-Freund: Probleme mit der Funktion file()

Beitrag lesen

Hallo Auge,

Ich versuche das mal auseinanderzudröseln.

Die Datei existiert nicht, woraus die offensichtliche Warnung resultiert.

Warning: file(var/log/apache2/example.com/access.log): failed to open stream: No such file or directory in /var/www/example.com/htdocs/log/index.php on line 65

Ich war fälschlicherweise davon ausgegangen, dass die Warnung alles ist, aber file generiert sowohl die Warnung, gibt aber zusätzlich auch false zurück. Momit wir bei der mutmaßlichen Ursache für die Ausgabe von „Array“ sind.

Notice: Array to string conversion in /var/www/example.com/htdocs/log/index.php on line 67 Array

Die Ausgabe stammt, so vermute ich, nicht von file, sondern aus der Fehlerbehandlung von Error[1], die laut dem Eröffnungsposting folgendermaßen aussieht.

if (false === ($loglines = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)))
{
     exit (error_get_last());
}

Der Code springt also sehr wohl in den Fehlerblock und beendet das Skript, wobei mit error_get_last eine Ausgabe der Ausgabe Fehlermeldungen erzeugt werden soll. Für die Funktion error_get_last ist als Rückgabewert ein assoziatives Array angegeben. Dieses Array wird mit exit (error_get_last()); aber in einen String umgewandelt, der schlicht „Array“ lautet.

Kein Bug in file, sondern, wenn ich richtig liege, nur eine falsche Benutzung von error_get_last.

Gut erläutert!

Ich zieh' meinen virtuellen Hut.
Ich habe stundenlang an der Lösung vorbeigeschaut.

Man muss also jedes Statement möglichst einzeln untersuchen, wenn so einen Fehler hat.

Selber Tschö
PHP-Freund


  1. Dazu passt auch, dass der zweite Fehler zwei Zeilen nach dem ersten auftritt. ↩︎