Auge: Probleme mit der Funktion file()

Beitrag lesen

Hallo

Ich habe mal das Posting etwas umgestellt und speziell die beiden Meldungen auseinandergenommen.

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

Der Pfad stimmt absichtlich nicht; es fehlt der führende Slash.

Du hast also einen nicht existierenden Pfad angesprochen, um das Verhalten im Fehlerfall zu prüfen? Die Funktion tut jedenfalls das, was das HHandbuch sagt. Existiert die Datei nicht am angegebenen Ort, reagiert die Funktion mit einer Warnung. Mit false reagiert die Funktion in einem solchen Fall jedoch nicht.

Da wird aber kein false zurückgegeben, sondern 'Array'

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

In Zeile 67 wird also ein Array zu einem String, weshalb deine Ausgabe auch „Array“ lautet. Das ist wohl ein Folgefehler.

Das kriege ich auch nicht weg. Wo ist der Fehler?

Kurzfassung: in deinem Code.

Langfassung: da wir bisher deinen Beispielcode nur in den gezeigten Bruchstücken kennen, können wir dazu nur Vermutungen anstellen.

Was du erst einmal prüfen solltest, ist, ob der Benutzer, mit dem PHP ausgeführt wird, auf das Log überhaupt zugreifen darf. Wenn nicht, existiert die Datei für PHP nämlich nicht. Dafür kannst du die Funktion is_readable benutzen. Die gibt true nur dann zurück, wenn die Datei existiert und lesbar ist, sonst immer false.

Falls das das Problem nicht aufklärt, solltest du uns auch etwas mehr Code zeigen.

Kann ich zwar nicht glauben, aber könnte das auch ein Bug in PHP sein?

Die Funktion file ist so alt, dass ein Bug wohl nicht unbemerkt geblieben wäre.

Tschö, Auge

--
„Habe ich mir das nur eingebildet, oder kann der kleine Hund wirklich sprechen?“ fragte Schnapper. „Er behauptet, nicht dazu imstande zu sein“ erwiderte Victor. Schnapper zögerte (…) „Nun …“ sagte er schließlich, „ich schätze, er muss es am besten wissen.“ Terry Prattchett, Voll im Bilde