Sebastian M.: Ordner mit Dateien löschen

Hallo,

wie kann ich in PHP auf einem Server ein Verzeichnis inkl.
enthaltener Dateien und Unterverzeichnissen löschen?

Die Funktion rmdir(Verzeichnis) funktioniert leider nur mit leeren
Verzeichnissen, aber eben nicht, wenn da noch Dateien oder
Unterverzeichnisse drin sind.

Viele Grüße,
Sebastian

  1. Lieber Sebastian,

    Du lässt Dir alle Dateien in diesem Verzeichnis und seinen Unterverzeichnissen geben, die Du dann Stück für Stück löschst. Anschließend löschst Du die Unterverzeichnisse rekursiv (also mit dem am tiefsten Verschachtelten anfangen), bis Dein Verzeichnis leer ist.

    Wo ist das Problem?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo Felix,

      Du lässt Dir alle Dateien in diesem Verzeichnis und seinen
      Unterverzeichnissen geben, die Du dann Stück für Stück löschst.
      Anschließend löschst Du die Unterverzeichnisse rekursiv (also mit
      dem am tiefsten Verschachtelten anfangen), bis Dein Verzeichnis
      leer ist.

      Das ich so vorgehen muss, hatte ich mir fast schon gedacht. Wobei
      es mir absolut schleierhaft hast, warum die Löschen-Funktion nur
      leere Verzeichnisse löschen kann.

      Wo ist das Problem?

      Ich stehe derzeit auf dem Schlauch, wie ich alle Dateien und
      Verzeichnisse Stück für Stück durchgehen kann (beschäftige mich noch
      nicht so lange mit PHP).

      Das ganze soll natürlich auch sicher sein, nicht das mir hinterher
      ein Verzeichnis außerhalb der geplanten Struktur gelöscht wird.

      Viele Grüße,
      Sebastian

      1. Hallo

        Du liest den Inhalt aus, angefangen bei dem Ordner den du löschen möchtest, speicherst alles nacheinander in einem Array, fängst mit dem Letzten Arrayelement an zu löschen und somit löscht du schlussendlich den Ordner den du anfangs löschen wolltest. Sollte genug sicher sein, es steht ja nur der Inhalt des Ordners drin, mit dem du angefangen hast.

        mfg

        1. Hallo,

          Du liest den Inhalt aus, angefangen bei dem Ordner den du löschen möchtest, speicherst alles nacheinander in einem Array, fängst mit dem Letzten Arrayelement an zu löschen und somit löscht du schlussendlich den Ordner den du anfangs löschen wolltest. Sollte genug sicher sein, es steht ja nur der Inhalt des Ordners drin, mit dem du angefangen hast.

          Es ist egal, mit welchem Array-Element man anfängt, hauptsache man geht alle durch. Wichtiger ist es jedoch bei jedem Element zu überprüfen, ob es eine normale Datei oder wieder ein Ordner ist. In letzterem Fall muss das Ganze für diesen Ordner und eventuelle Unterordner wiederholt werden.

          Am besten macht man es mit einer Funktion, die den zu löschenden Ordnernamen als Parameter übergeben bekommt und sich bei Unterordner selbst aufruft, mit dem entsprechenden Unterordner als Parameter.

          Schöne Grüße,

          Johannes

  2. Hallo,

    Du könntest das mit einem einfachen Shellkommando machen. Wenn dein Server eine Linuxkiste ist:

    [link:http://www.php.net/manual/de/function.shell-exec.php@title=shell_exec]('rm -rf /home/sebastian/verzeichnis/');

    Unter Windows wird es da einen equivalenten Befehl geben. Es kann aber sein, dass dein Provider es nicht zulässt solche Shellbefehle auszuführen.

    Jeena

  3. Hallo Sebastian,

    wie kann ich in PHP auf einem Server ein Verzeichnis inkl.
    enthaltener Dateien und Unterverzeichnissen löschen?

    http://aktuell.de.selfhtml.org/artikel/php/verzeichnisse/

    Viele Grüße,
    Christian

    --
    "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup