is_file() funktioniert nicht korrekt bei Überordnern!

Galotti

Grünschnabel
Hallo alle zusammen :).

Ich hab ein kleines Problem mit einem Script, besser gesagt mit der Funktion "is_file()".
PHP:
<?php
$dir=opendir("..");
 while($file=readdir($dir))
 if ($file != "." && $file != ".." && is_file($file))
 echo "$file<br>";
 else
 echo "dir: [$file]<br>";
 closedir($dir);
?>

Es soll also erkennen, ob die Dateien in einem übergeordneten Ordner, Dateien bzw. Ordner sind.
Leider funktioniert dies nur bei untergeordneten Ordnern, d.h. nur dann erkennt er Ordner wirklich als Ordner und Dateien als Dateien.

Habe allerdings bereits herausgefunden, dass dies u.a. mit Windows zusammenhängen könnte. Auf einem Linuxsystem funktionierte das Script nämlich einwandfrei.

Wüsstet ihr vielleicht, wie man es auch auf (m)einem Windows-System, wo ich nunmal alle meine Scripts schreibe und teste zum Laufen bringen könnte?


Gruß, Hendrik Voss
 
Versuch's mal hiermit:
PHP:
<?php
$path = '../';

$dir = opendir($path);

while ($file = readdir($dir)) {
	if ($file != '.' && $file != '..' && is_file($path.$file)) {
		echo $file .'<br>';
	} else {
		echo 'dir: ['.$file.']<br>';
	}
}

closedir($dir);
?>
[phpf]readdir[/phpf] gibt dir nur den Dateinamen zurück, nicht aber den Pfad zur Datei. is_file($file) würde dir also zurückgeben, ob die Datei $file im aktuellen Verzeichnis eine Datei ist oder nicht. Um zur richtigen Datei zu kommen, musst du also noch die Pfadangabe voranstellen (siehe Code).
 
Zurück