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
generiertsowohldie Warnung, gibt aber zusätzlich auchfalse
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 derAusgabeFehlermeldungen erzeugt werden soll. Für die Funktionerror_get_last
ist als Rückgabewert ein assoziatives Array angegeben. Dieses Array wird mitexit (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 vonerror_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
Dazu passt auch, dass der zweite Fehler zwei Zeilen nach dem ersten auftritt. ↩︎