FTP Directory Listing-Problem

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

  • FTP Directory Listing-Problem

    Hallo zusammen,

    ich möchte den gesamten Inhalt eines FTP-Verzeichnisses auslesen und ausgeben lassen.

    Das funktioniert soweit auch.
    Nur eine Sache nicht so ganz.

    Und zwar wird beim ersten auflisten der Ordner (vom Root-Verzeichnis) ein Ordner einfach übersprungen.

    Ausgegeben wird:
    Dateien in / :
    test.php

    Ordner in / :
    changes

    Dateien in /changes :
    /changes/1.0.txt
    /changes/1.0.txt.LCK

    Ordner in /changes :
    releases
    ...


    Die eigentliche Struktur wäre aber:
    Root
    /changes
    /releases

    Hier ist der Code für die Funktion:


    PHP-Code:
    function get_rlist($dir)
        {
           
    // Variablen löschen
           
    unset($list);
           unset(
    $files);
           unset(
    $folders);
           unset(
    $folder);
           unset(
    $file);
           
           @
    ftp_chdir($this->conn_id$dir);
           
    // $dir = aktuelles Verzeichnis
           
    $dir ftp_pwd($this->conn_id);
           
    $list=Array();
           
    $list=ftp_nlist($this->conn_id"$dir");
           
    $files = Array();
           
    $folders = Array();
           
           for(
    $i 0$i != sizeof($list); $i++) {
               
    $entry str_replace("//"""$list[$i]);
               if(@
    ftp_chdir($this->conn_id$entry)) {
                   
    $folders[] = $entry;
                   
    ftp_chdir($this->conn_id$dir);
               }
               else {
                   
    $files[] = $entry;
               }
           }
           
           print 
    "\t<b> Dateien in ".$dir." :</b><br>";
           foreach(
    $files as $file) {
               print 
    $file."<br>";
           }
           
           print 
    "\t<br><b>Ordner in ".$dir." :</b><br>";
           foreach (
    $folders as $folder) {
               print 
    "\t".$folder."<br>";
               
    ftp_chdir($this->conn_id$dir);
               print 
    "<br>";
               
    $this->get_rlist($folder);
           }
       } 

    Was habe ich falsch gemacht ?

    Danke schon mal im Vorraus

    MfG

  • #2
    hab den code nicht angesehen,

    aber du hast vermutlich ne rekursion.
    wenn du ins verzeichnis changes reingehst, speicherst du den namen in $dir. aber wenn du wieder rausgehst, musst du das auch wieder rückgängig machen.

    (vermutung)

    Kommentar


    • #3
      hmm...
      An welcher Stelle ???

      Kommentar


      • #4
        Was kommen denn für Meldungen wenn du die @'s weg machst?

        Kommentar


        • #5
          vermutlich keine.

          Kommentar


          • #6
            Doch:

            Warning: ftp_chdir(): /releases/1.0/mainfile.php: Not a directory in /home/www/web107/html/test/class.eFtp.php on line 88

            Und das bei jeder Datei

            Kommentar


            • #7
              na, ich war eigentlich davon ausgegangen, dass du vor dem posten unsere regeln gelesen und befolgt hast. *getäuscht*

              Da kannste mal sehen, wie man sich diesen Thread wieder hätte sparen können...

              Kommentar


              • #8
                Wenn ich die @s entferne, sollte eigtl. nicht viel passieren.

                Stattdessen erscheint dies:

                PHP-Code:
                Warningftp_chdir(): /releases/1.0/mainfile.phpNot a directory 
                in 
                /home/www/web107/html/test/class.eFtp.php on line 88 
                Hallo
                Ist das so ok ?

                Kommentar


                • #9
                  ?? w0000t?

                  Wie kommst du darauf das die Meldung "/releases/1.0/mainfile.php: Not a directory" so ok ist?

                  Dir ist schon klar was diese "Fehler"-meldung besagt?

                  Weißt du eigentlich was das "@" macht? Es unterdrückt die Fehlerausgabe des Befehls dem es voran gestellt ist.

                  Kommentar


                  • #10
                    Weiter unten in der Schleife über die Einträge wird versucht, per ftp_chdir() in das Verzeichnis zu wechseln - um zu testen, ob es eins ist.
                    Für FTP gibt's wohl kein is_dir/is_file, also muss man da schon solche Krücken bemühen. Und das @ davor ist an der Stelle auch "OK", weil man ja nicht bei jedem fehlgeschlagenen Test eine Meldung zu sehen bekommen möchte ...
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      @wahsaga: Ja, das ist richtig - aber man sollte zumindest bei der Fehlersuche erst mal alle wegmachen um den Fehlr einzukreisen. Wenn es ein gewollter Fehler ist kann man es ja gerne wieder hin machen

                      Kommentar


                      • #12
                        Danke für Eure Antworten

                        Also, ich sehe da kein is_file oder is_dir )

                        Sind ja im Prinzip Krücken eingebaut:
                        Und zwar das versucht wird in das Verzeichnis zu wechseln.

                        Wenn's nicht geht, ist es eine Datei.

                        Da hast Du schon recht @wahsaga

                        @prego:
                        Wenn die @s weg sind erscheint ja für jede Datei eine Fehlermeldung.
                        Da sind die @s schon richtig ^^

                        MfG

                        Kommentar


                        • #13
                          Ich komme leider immer noch net weiter.

                          Hat denn keiner mehr eine Idee ?

                          MfG

                          Kommentar

                          Lädt...
                          X