Filesize: Stat failed in einer Schleife

_Sunny_

Grünschnabel
Hallo,
ich baue gerade das Skript, wo ich auch schon Probleme mit dem Verzeichnis hatte, in eine Seite ein, wo es später aufgerufen wird.
Nun hänge ich an den Funktionen, die Dateigrösse und das Datum auslesen. Mit festen Dateien funktioniert alles ohne Probleme, jedoch bekomme ich mit dem Aufruf einer Variable, die den Namen der auszulesenden Datei enthält, ein Problem:

Warning: filesize() [function.filesize]: stat failed for 123.txt in /var/www/vhosts/wh1022.ath.cx/httpdocs/amtest/contents/table.php on line 84

Warning: filesize() [function.filesize]: stat failed for 321.txt in /var/www/vhosts/wh1022.ath.cx/httpdocs/amtest/contents/table.php on line 84
Dies ist die Stelle im Code, wo ich diese Abfrage ganz einfach per Echo ausgeben lasse, ohne den gesamten Code (das Echo, was auch Teile einer Tabelle aufbaut), der später den weiteren Teil der Tabelle aufbaut.
PHP:
while(false !== ($file = readdir($dir)))
	{
		if ($file != '.' && $file != '..')
			{
				if (!empty($replaces[$file]))
				$name = $replaces[$file];
				else
				$name = $file;
				echo filesize($file) . "<br />";
				$color = ($i % 2) ? "#657890" : "#567890";
				echo "<tr>\n<td style=\"background-image:url(../../contents/img/border_05.png)\"></td>\n<td colspan=\"2\" bgcolor='$color'><a href=\"".'tempss/'.$file."\">".$name."</a></td>\n<td style=\"background-image:url(../../contents/img/border_green_05.png)\"></td>\n";
			}
	}
Anscheinend wird die Datei gefunden, aber es können wohl keine Daten wie Grösse, Bearbeitungsdatum ausgelesen werden. Die Rechte für diese Dateien bzw. den Ordner habe ich für alle auf Lesen/Schreiben/Ausführen gesetzt.
 
filesize() erwartet einen Pfad zur Datei. Du übergibst aber nur den Namen einer Datei die in einem anderen Ordner als das ausführende Script liegt.
 
Manchmal sieht man solch einfache Fehler nicht... Hier bin ich davon ausgegangen, dass $file auch den gesamten Pfad zur Datei enthält. Da habe ich wohl etwas falsch gedacht, denn wenn ich den Unterordner mit angebe, funktioniert alles.

@saftmeister: clearstatcache braucht man wenn ich das richtig verstanden habe, nur um temporär gespeicherte Variablen zu leeren, wenn sich die betroffenen Daten geändert haben und mehrmals in einem Skript aufgerufen werden. In meinem Fall werden ja am Ende nur noch Dateigrösse und Änderungsdatum ausgelesen, was sich ja nicht so schnell ändern sollte.
 
Ja, da hast du recht. Ich habe allerdings die Erfahrung gemacht, das durch ein Directory komplett durchzulaufen unter umständen falsche Werte zurück liefert. Daher habe ich mir angewöhnt, vor jedem stat-Call ein clearstatcaches zu rufen.
 
Zurück