Pfadtiefe beim Verzeichnis auslesen

visiondpc

Erfahrenes Mitglied
Hallo. Ich habe ein kleines Script, daß den Inhalt eines Verzeichnisses ausliest und Nach Dateien und Ordnern sortiert in unterschiedlichen Spalten einer Tabelle anzeigt.

Wenn ich als $Pfad '.' angebe klappt alles bestens. $Pfad='TestOrdner'; funktioniert auch noch problemlos. Wenn ich aber noch ein oder mehr Verzeichnisse höher gehe und z.B. $Pfad='TestOrdner/TestOrdner2'; angebe werden alle darin befindlichen Unterordner als Datei angezeigt.
Gibt es eine maximale Pfadtiefe für diese Funktion oder wie kann das sein?

PHP:
if($Verzeichniszeiger=opendir($Pfad)) 
	{
		while($Datei=readdir($Verzeichniszeiger))
		{
			if ($Datei!="." && $Datei!="..")
			{
				if(is_dir($Datei))
				{
					echo '<div><a href="index.php?ref='.$_GET['ref'].$slash.$Datei.'" ><img src="navigator/folder.png" alt="Folder" border="0" /></a><br />';
					echo '<a href="index.php?ref='.$_GET['ref'].$slash.$Datei.'" style="color: #000000;"  ><strong>'.$Datei.'</strong></a></div>';
					echo '<br />';
					$folder=$folder+1;
				}
			}
		}
		closedir($Verzeichniszeiger);
	}  
	echo '</td><td>';
	if($Verzeichniszeiger=opendir($Pfad)) 
	{
		while($Datei=readdir($Verzeichniszeiger))
		{
			if ($Datei!="." && $Datei!="..")
			{
				if(!is_dir($Datei))
				{
					echo '<div><a href="'.$_GET['ref'].$slash.$Datei.'" target="_blank"><img src="navigator/file.png" alt="File" border="0" /></a><br />';
					echo '<a href="'.$_GET['ref'].$slash.$Datei.'" style="color: #000000;" target="_blank" ><strong>'.$Datei.'</strong></a></div>';
					echo '<br />';
					$file=$file+1;;
				}
			}
		}
		closedir($Verzeichniszeiger);
	}
 
Also eigentlich gibt es da keine Beschraenkung bei der Pfadtiefe.
Der Grund warum die Verzeichnisse nicht als solche erkannt werden duerfte an Deinem is_dir()-Konstrukt liegen. Denn in $Datei steht wirklich nur der Name, nicht der komplette Pfad. Es wird also dabei immer im aktuellen Verzeichnis gesucht.
 
Aber $Datei wird doch aus dem Angegebenen Verzeichnis ausgelesen. Die Dateien die angezeigt werden stammen ja auch aus dem angegebenen Verzeichnis. Oder meinst Du, daß ich in $Datei den kompletten Pfad angeben müßte? In dem Fall dürfte es doch in einem direkten Unterordner auch nicht funktionieren. Das klappt aber.
 
$Datei wird zwar aus dem angegebenen Verzeichnis gelesen, aber is_dir() weiss davon ja nichts. Dementsprechend musst Du auch bei is_dir() den kompletten Pfad noch vor $Datei setzen.
PHP:
if (!is_dir($Pfad.'/'.$Datei))
Ich wunder mich auch etwas warum es eine Ebene unter dem aktuellen Verzeichnis funktioniert, aber probier mein Beispiel mal aus, damit sollte es gehen. Wenn Du das aktuelle Verzeichnis durchsuchen willst solltest Du dabei dann . als Verzeichnisnamen angeben, ein leerer Verzeichnisname wuerde hier auch zu Problemen fuehren.
 
Zurück