Rekursive Dateisuche

max26

Grünschnabel
In C, C++, C# funktioniert dieser Code, doch in PHP nicht!
Warum?
Bin echt am verzweifeln!
Bitte helft mir!

PHP:
function suche($dir)
{
     $files = scandir($dir);

     foreach($files as $file)
     {
 	if(is_file($file))
 	  echo $file;
 	if(is_dir($file) && $file != "." && $file != "..")
 	  suche($dir);
     }
}

suche(getcwd());

Danach hängt sich Apache auf!
APACHE SERVER FUNKTIONIERT NICHT MEHR --> APPCRASH

nutze zu Testzwecken XAMPP unter Vista
 
Ich behaupte mal das ist eine Endlosschleife, wenn Ordner vorhanden sind.

Da $dir immer gleich ist, durchsuchst du weiter das selbe Verzeichnis, auch wenn du dank eines Ordner die Funktion Rekursiv nocheinmal aufsuchst.

btw ich bezweifel dass der Code so in C usw funktioniert :eek:
 
OOOOOPs!
Kleiner Verschreiber: Das Argument der rek. aufgerufenen Methode suche($dir) ist natürlich auf suche($file)
zu äandern

PHP:
 foreach($files as $file)
 {
 	if(is_file($file))
 	  echo $file.'<br>';
 	if(is_dir($file) && $file != "." && $file != "..")
 	  suche($file);
 }

}
suche(getcwd());

Jedoch zeigt es nur die Dateien im Basisordner und nicht im Unterordner an
HILFE
 
Hi,
in $file steht nur der Ordnername ohne komplette Adresse.
Dort steht also statt z.B. "D:\Xampp\htdocs\projekt_1" nur "projekt_1" und ich denke mal, dass PHP den Ordner dann nicht findet.

mfg.Fide
 
Danke für die Antwort
Die frage ist nur ob das an der blöden WinPfadangabe(immer absolut) ligt oder.....an dem script?
Mir fällt jedoch kein Lösungsansatz ein!!
Fals grad wer einen httpd unter unix am laufen hat: BITTE AUSPROBIEREN
 
Also hier so geht es unter Windows:

PHP:
function suche($dir)
{
     $files = scandir($dir);
     echo "<h1>$dir</h1>";
     foreach($files as $file)
     {
         $adresse = $dir."\\".$file;

         if(is_file($adresse))
             echo $file."<br />";
         if(is_dir($adresse) && $file != "." && $file != "..")
             suche($adresse);
     }
}

suche(getcwd());

Bei Linux müsste man die "\\" durch "/" ersetzen.

mfg.Fide
 
Zuletzt bearbeitet:
Zurück