Hat das Verzeichnis Unterordner?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Hat das Verzeichnis Unterordner?

    Wie kann ich prüfen ob ein Verzeichnis Unterordner hat?

    Versucht habe ich es so:

    PHP-Code:
    $handle opendir("C:\wampp13cs\htdocs\testfolder\");

    while(
    $file = readdir($handle))
    {
       if (is_dir(
    $file))
       {
          
    $type = 0;
       }
          else if (is_file(
    $file))
       {
          
    $type = 1;
       }
       echo "
    <br>$type $file<br>";

    So könnte ich darauf schliessen dass wenn einmal $type = 0 erscheint der Ordner einen Unterordner hat. Das Script gibt mir aber auch bei den Dateien den Wert 0 zurück. Wieso das? is_dir() sollte doch prüfen ob die Datei ein Verzeichnis ist?

    Kann mir jemand sagen was ich falsch mache? Oder gibt es eine bessere Möglichkeit zu prüfen ob der Ordner einen Unterordner hat?

  • #2
    Hab das Skript hier mal probiert
    PHP-Code:
    <?
    $handle = opendir(".");

    while($file = readdir($handle))
    {
       if (is_dir($file))
       {
          $type = 0;
       }
          else if (is_file($file))
       {
          $type = 1;
       }
       echo "$type / $file<br>";
    }
    ?>
    und das hier war mein ergebnis:
    OffTopic:

    0 / .
    0 / ..
    1 / leer.txt
    1 / x.bak
    1 / x.php
    1 / x.php.PHPEditBackup
    0 / Ordner



    P.S.: du hast bei der Verzeichnisauswahl die " mit \" gemacht. Diese müssen aber hier nur " sein.
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      Ich habe das nchmals versucht. mit

      $handle = opendir(".");

      lief das Script in Ordnung.
      Sobald ich aber den absoluten Pfad einsetzte funktioniert es nicht mehr. Ich habe darauf hin einige Pfade ausprobiert.
      Alle Pfade die innerhalb des DocumentRoot von Apache liegen funktionieren nicht. Ich bekomme dann als Wert immer 0, egal ob Datei oder verzeichnis.
      Ist der Pfad aber ausserhalb des Document Root funktioniert es.


      Vielen Dank fürs probieren. Für meine Anwendung brauche ich die Funktion sowieso ausserhalb des DocumentRoot. Innerhalb funktioniert es wahrscheinlich nur mit relativen Pfaden, keine Ahnung wieso ( "." funktioniert ja).

      Kommentar


      • #4
        Du musst nur beim isdir den Pfad mit angeben.
        opendir impliziert nämlich kein chdir!

        PHP-Code:
        $dirname "C:\\wampp13cshtdocs\\testfolder";
        handle opendir($dir);

        while(
        $file readdir($handle))
        {
          if (
        is_dir("$dir\\$file"))
            
        $type 0;
          else if (
        is_file("$dir\\$file"))
            
        $type 1;
          else
            
        $type 2# es gibt ja auch noch Links etc.
          
        echo "<br>$type / $file<br>";

        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          ok, danke für den Hinweis. Ich habe gedacht dass wenn ich den Pfad im opendir angebe nur noch eine relative Angabe von dort aus nötig ist.
          Jetzt ist alles klar. Danke.

          Kommentar


          • #6
            und falls du den absoluten pfad nicht kennst, kannst du ihn mit
            PHP-Code:
            $rootdir dirname(getenv("SCRIPT_FILENAME")); 
            herausfinden
            gruss
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              komisch

              da bekomme ich aber den Pfad zum Ordner wo die php.exe drin ist.
              Mit $SCRIPT_NAME bekomme ich den gesamten Pfad der php.exe.


              Komische Sache...

              Sollte eigentlich den Pfad des aktuellen Scripts anzeigen oder?

              Kommentar


              • #8
                unter linux ist das der pfad zum php-script, warum das unter windows anders ist, keine ahnung.
                gruss
                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  es sollte eigentlich auch der Pfad zum Script sein, auch unter Windows. Wenigstens steht im PHP Manual nichts davon dass das unter Windows irgendwie eingeschränkt wäre.

                  Aber keine Ahnung. Im Moment benötige ich das auch nicht, der Name des Scripts wird ja nicht ständig verändet normalerweise.

                  Kommentar


                  • #10
                    das ist die CGI-Version ... die behauptet immer, php.exe würde gerade ausgeführt (stimmt ja im Prinzip auch, nur man kann nicht besonders viel damit anfangen)

                    mit dirname($pfad) bekommst du das Verzeichnis einer Pfadangabe
                    mit basename($pfad) nur den Dateinamen.

                    Den Pfad zum Skript sollte dir __FILE__ oder $REQUEST_URI liefern; $REQUEST_URI muss aber eventuell noch mit parse_url weiterverarbeitet werden, wenn Hash oder Parameter angegeben sind.
                    mein Sport: mein Frühstück: meine Arbeit:

                    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                    Kommentar

                    Lädt...
                    X