NetLook: Prüfen ob Variable ein Verzeichnis ist, funktioniert nicht?

Hallo!

Habe folgenden Code, der 2 Verzeichnisse durchlaufen und auslesen soll:

Code:

$Dr = array();
$Dr[0]="../dir1/dir2/";
$Dr[1]="../dir3/dir4/";
$art=3;

if($art==3)
{
   foreach($Dr as $Verz)
   {
   echo $Verz."<br>";
   echo $i++."<br>";
      //prüft ob Verzeichnis existiert
      if (is_dir($Verz))
      {
         //öffnet Verzeichnis
          if ($ordner = opendir($Verz))
         {
            //Solange noch Dateien im Verzeichnsi existieren
            while (($dateien = readdir($ordner)) !==false)
            {
               //und die Datei nicht "." oder ".. "heist
                  if ($dateien != "." && $dateien != "..")
                  {
                     if(is_dir($dateien))
                     {
                     echo "dann hier: ".$dateien."<br>";
                     }
            //Wird jede Datei oder Ordner in ein Array gepackt
                  echo "datei: ".$dateien."<br>";
                  $files[] = $dateien;
                  }
             }
         }
         //Verzeichnis wird geschlossen
         closedir($ordner);
      }
   }
//Array, also die Dateien werden alphabetisch von A nach Z sortiert
natcasesort($files);
}

An der If Abfrage ob $dateien ein Verzeichnis ist passiert aber nichts, obwohl bei dem 2ten Pfad es sich um Verzeichnisse handelt?!

Gruß
NetLook

  1. Hallo,

    1.) Du prüfst in Deinem Script zweimal mittels is_dir(). Welche der Beiden if-Anweisungen meist Du also?
    2.) Ist Eine Verzeichnisstruktur nicht näher beschrieben, alsdaß man Dein Problem hätte nachvollziehen könnte.

    Gruß aus Berlin!
    eddi

  2. Hallihallo!

    Hallo!

    Habe folgenden Code, der 2 Verzeichnisse durchlaufen und auslesen soll:

    [...]             //und die Datei nicht "." oder ".. "heist
                      if ($dateien != "." && $dateien != "..")
                      {
                         if(is_dir($dateien))
                         {
                         echo "dann hier: ".$dateien."<br>";
                         }[...]

    
    > An der If Abfrage ob $dateien ein Verzeichnis ist passiert aber nichts, obwohl bei dem 2ten Pfad es sich um Verzeichnisse handelt?!  
      
    Über dieses Problem bin ich gestern auch erst gestolpert, und die Erklärung ist eigentlich logisch:  
      
    Angenommen, $Verz ist "D:/verzeichnis", und das gefundene Unterverzeichnis ($dateien="unterverzeichnis") liegt demnach in "D:/verzeichnis/unterverzeichnis".  
      
    Dein Skript sucht aber nach einem "unterverzeichnis" statt nach einem "D:/verzeichnis/unterverzeichnis".  
      
    (Ich hoffe, das Beispiel war verständlich)  
      
    Des Rätsels Lösung ist also:  
      
    Ändere die Abfrage  
    ~~~php
      
        if (is_dir($dateien))  
    
    

    in

      
       if (is_dir($Verz."/".$dateien))  
    
    

    und schon findet die If- Abfrage das Verzeichnis.

    Ich hoffe, ich konnte Dir damit helfen.

    Viele liebe Grüße,
    Der Dicki