Hallo und guten Abend,
ich arbeite bei unserem Gästebuch mit Textdateien.
Die Textdateien bestehen dabei aus einzelnen Zeilen, die ich mittels des Kennzeichens (?) "PHP_EOL" trenne, die einzelnen Informationen der Zeilen wiederum sind durch "|" voneinander abgegrenzt.
Hier der php-Code zum Einlesen der Einträge:
$Datei = "../Textdateien/Gaestebuch__Eintraege.txt";
$Dateiname = substr ($Datei, 15);
if (file_exists ($Datei))
{
if (is_readable ($Datei))
{
$Zeiger = @fopen ($Datei, "rb");
if ($Zeiger)
{
fseek ($Zeiger, 0, SEEK_END);
$Dateigroesse = ftell ($Zeiger);
if ($Dateigroesse > 0)
{
$Versuche = 0;
do
{
if ($Versuche > 0)
{
usleep (rand (1, 10000));
}
$Versuche += 1;
}
while (! flock ($Zeiger, LOCK_EX) and $Versuche <= 100);
if ($Versuche === 100)
{
$Meldung = 'Die Datei "' . $Dateiname . '" kann nicht verriegelt werden';
}
else
{
echo "Lese Datei<br><br>";
$Inhalt = @fread ($Zeiger, $Dateigroesse);
flock ($Zeiger, LOCK_UN);
fclose ($Zeiger);
echo "<br><br>Datei eingelesen";
var_dump ($Inhalt);
}
}
}
}
}
Die Ausgabe im Browser liefert mir folgende Angaben:
Dateigroesse: 2597
filesize: 2597
Lese Datei
string(0) ""
Datei eingelesen
D.h., folgende Voraussetzungen scheinen erfüllt zu sein:
1. Datei besteht
2. Datei ist lesbar
3. Zeiger kann initialisiert werden
4. Dateigröße > 0, d.h. es wird fortgefahren
5. Verriegelung klappt
Was ich allerdings nicht verstehe, ist, dass $Inhalt leer ist.
Ich habe etliche Seiten im Internet durchforstet und verschiedene Ansätze ausprobiert, aber das Array "$Inhalt" bekommt keinen Inhalt zugewiesen.
Was habe ich falsch gemacht?
Vielen Dank für eure Mithilfe.
Gruß,
Enrico