Ankündigung

Einklappen
Keine Ankündigung bisher.

FTP Ordner löschen

Einklappen

Neue Werbung 2019

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

  • FTP Ordner löschen

    Hi,
    gibt es eine möglichkeit gefüllte Ordner über FTP zu löschen ?? habe nähmlich ein ziemliches Problem gerade damit. Möchte nähmlich mit meinen erst Server auf dem 2. Server dateien löschen und habe dafür den FTP zugang.


  • #2
    Hallo mokus,

    magst du bitte mal ganze und verständliche deutsche Sätze formulieren, so dass jeder der hier anwesenden dein Problem auch versteht? Danke.

    Ich gehöre gerade zu der Gruppe von Personen, die nicht wirklich nachvollziehen können, WAS wirklich dein Problem/deine Aufgabenstellung ist. Ebenso kann ich nicht einordnen, ob es nach PHP-Anfänger gehört oder in eine andere Kategorie...
    Viele Grüße,
    Dr.E.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1. Think about software design before you start to write code!
    2. Discuss and review it together with experts!
    3. Choose good tools (-> Adventure PHP Framework (APF))!
    4. Write clean and reusable software only!
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Kommentar


    • #3
      OK, ich versuchs mal:
      Server1 soll auf Server2 komplette Ordner löschen, die nicht leer sind. Gibt mir zwei Bier und ich versteh alles
      Weiß aber auch net weiter -.-
      Nicht jeder Fehler ist ein Bug.

      Kommentar


      • #4
        Also ich möchte von Server1 aus, Dateien auf dem Server2 (RemoteServer ) löschen.

        Und jetzt habe ich das Problem das ich ja keine vollen Ordner einfach so löschen kann. Deshalb muss ich jetzt alle Dateien und Verzeichnisse im Ordner löschen.

        Und jetzt ist meine Frage, gibt es vieleicht einen einfachen FTP Befehl dazu??

        Kommentar


        • #5
          Hallo mokus,

          es wird nun etwas klarer, was du meinst.

          Um Dateien gesteuert von einem Server vom anderen löschen zu können braucht man zunächst Rechte auf Server2. Diese scheinst du ja in Form eines FTP-Benutzers zu haben. Das FTP-Protokoll sieht es zunächst nicht vor, einen oder mehrere Ordner rekursiv zu löschen.

          Da du im PHP-Forum gepostet hast nehme ich an, dass das auch per PHP realisiert werden soll?! Das muss dann (Pseudocode) so von Statten gehen:

          Code:
          Setze zu löschendes Verzeichnis fest
          
          Lese Verzeichnisse auf Server 2
          
             Loop durch Verzeichnis-Liste
          
                Prüfe ob zu Löschendes Verzeichnis dem aktuellen entspricht
          
                   Falls ja, rufe eine Funktion auf, die dieses Verzeichnis löscht
          
             Ende Loop
          Die "Löschen-Funktion" muss rekursiv ausgelegt sein. Das bedeutet, sobald die Funktion keine Datei sondern ein Verzeichnis in einer Dateiliste eines Ordners vorfindet wird diese Funktion nochmals unter Angabe des gefundenen Verzeichnisses aufgerufen. So wird sichergestellt, dass unterhalb des gewählten Verzeichnisses auch rekursiv gelöscht werden kann.
          Viele Grüße,
          Dr.E.

          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          1. Think about software design before you start to write code!
          2. Discuss and review it together with experts!
          3. Choose good tools (-> Adventure PHP Framework (APF))!
          4. Write clean and reusable software only!
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

          Kommentar


          • #6
            Ja soweit war ich jetzt auch schon, nur leider müsste ich dann die DAteien vom 2. Server selbst löschen lassen.

            Kommentar


            • #7
              Und wo ist da das Problem?

              Kommentar


              • #8
                Gibt keins mehr habe es soweit ich gtestet habe geschafft.

                PHP-Code:
                function Ordner_loeschen ($Verbidung_starten$Adresse) {

                $DateienArray ftp_nlist ($Verbidung_starten$Adresse);
                $DateienAnzahl count($DateienArray);

                $k 0;
                for (
                $i=0;$i<$DateienAnzahl;$i++) {
                $k++;

                if (!
                ftp_delete ($Verbidung_starten$Adresse."/".$DateienArray[$i])) {
                Ordner_loeschen ($Verbidung_starten$Adresse."/".$DateienArray[$i]."/");
                }

                }
                ftp_rmdir ($Verbidung_starten,$Adresse);
                }

                Ordner_loeschen ($Verbidung_starten$Adresse.$_GET['datei']); 

                Kommentar


                • #9
                  PHP-Code:
                  Ordner_loeschen ($Verbidung_starten$Adresse.$_GET['datei']); 
                  Das riecht mir nach Sicherheitslücke...

                  Zudem sollte statt

                  PHP-Code:
                  if (!ftp_delete ($Verbidung_starten$Adresse."/".$DateienArray[$i])) { 
                  besser ein

                  PHP-Code:
                  if (!ftp_is_dir(...)) { 
                  schreiben. Anregungen dazu unter http://de3.php.net/manual/de/function.ftp-nlist.php.
                  Viele Grüße,
                  Dr.E.

                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                  1. Think about software design before you start to write code!
                  2. Discuss and review it together with experts!
                  3. Choose good tools (-> Adventure PHP Framework (APF))!
                  4. Write clean and reusable software only!
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                  Kommentar


                  • #10
                    Naja leider gibt es die funktion ftp_is_dir() bei mir nicht.

                    Jetzt habe ich aber nochmal ein anderes Problem, ich habe gemerkt das ich nur bestimmte Dateien hochladen.

                    PHP-Code:
                    ftp_put ($Verbidung_startenstr_replace("|","/",$Pfad).$_FILES['Datei_'.$i]['name'] , $_FILES['Datei_'.$i]['name'] , FTP_BINARY
                    Wodran könnte das liegen?

                    Kommentar


                    • #11
                      Naja leider gibt es die funktion ftp_is_dir() bei mir nicht.
                      Bei mir auch nicht. Man sieht aber bei dir genau, dass du das Manual nicht gründlich genug liest, denn dort steht eine Implementierung der Funktion. *grr*

                      PHP-Code:
                      ftp_put ($Verbidung_startenstr_replace("|","/",$Pfad).$_FILES['Datei_'.$i]['name'] , $_FILES['Datei_'.$i]['name'] , FTP_BINARY
                      Wodran könnte das liegen?
                      Weiß ich ehrlich gesagt nicht, denn mir erschließt sich beispielsweise dein str_replace() nicht. Dein Upload-Prozess scheint aber so zu sein, dass du zunächst Daten per HTTP-Upload hochlädst (du verwendest ja $_FILES) und diese dann anschließend per FTP verschiebst. In diesem Fall wird das schief gehen, denn $_FILES['Datei_'.$i]['name'] enthält nur den Namen der Datei, die hochgeladen wurde, nicht aber den Pfad und geschweige den Namen der Datei, wie sie per HTTP in ein von PHP spezifiziertes Upload-Verzeichnis geschrieben wurde.

                      Ich empfehle dir dringend das Manual zu lesen, denn meine Hinweise stehen dort 1:1 drinnen. Ausserdem hätte dir ein

                      PHP-Code:
                      print_r($_FILES['Datei_'.$i]) 
                      erraten, warum es nicht geht. Oder spuckt dein PHP keine Fehlermeldungen aus, die du hättest verstehen und zumindestens hier posten können?
                      Viele Grüße,
                      Dr.E.

                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                      1. Think about software design before you start to write code!
                      2. Discuss and review it together with experts!
                      3. Choose good tools (-> Adventure PHP Framework (APF))!
                      4. Write clean and reusable software only!
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                      Kommentar


                      • #12
                        Genau das ist es ja!!!

                        Ich bekomme keine Fehlermeldung, ausserdem lädt er bestimmte Dateien ja hoch. Als Beispiel

                        Link.php 5 kb - Lädt er hoch
                        1.txt 2 kb - Lädt er nicht hoch

                        Und ohne Fehlermeldung stehe ich im leeren

                        Kommentar


                        • #13
                          Setz an den Anfang deines Skriptes
                          PHP-Code:
                          <?php
                          error_reporting
                          (E_ALL E_STRICT);
                          ini_set('display_errors'1);
                          ?>

                          Kommentar


                          • #14
                            ...

                            Es kommt einfach nix, habe zwar andere Fehlermeldungen gesehen und sie behoben, aber sonst nix.

                            Kommentar


                            • #15
                              Hallo mokus,

                              ich hab dir doch bereits beschrieben, wie du analysieren kannst, WAS in deinem Script abgeht. Bitte nutze Tools wie var_dump() oder print_r() auch zum Debuggen, sonst kann dir hier keiner helfen. Ich hatte bereits meine Vermutungen geäußert, hellsehen kann ich jedoch nicht, da du mir auch keinen vollständigen Code deines Scripts zur Verfügung stellst oder zum selber debuggen keine Lust hast...
                              Viele Grüße,
                              Dr.E.

                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                              1. Think about software design before you start to write code!
                              2. Discuss and review it together with experts!
                              3. Choose good tools (-> Adventure PHP Framework (APF))!
                              4. Write clean and reusable software only!
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                              Kommentar

                              Lädt...
                              X