Margit Kraus: PHP Löschen eines Verzeichnisses inkl. Dateien funktioniert nicht.

Beitrag lesen

Ich habe ein Problem mit der Funktion rec_rmdir, die auf dieser Seite vorgestellt wird. https://wiki.selfhtml.org/wiki/PHP/Tutorials/Rekursives_Löschen_von_Verzeichnissen

Meine Verzeichnisstruktur: Index.php Unterverzeichnis: NeuerOrdner – darin befinden sich bild1.jpg, bild2.jpg.

Wenn das Verzeichnis NeuerOrdner leer ist, kann ich es mit der index.php und rmdir („NeuerOrdner“); problemlos löschen.

Wenn ich in der index.php den Code aus dem obigen Tutorial verwende (wenn „NeuerOrdner“ nicht leer ist), passiert nichts:

<?php

$path = „NeuerOrdner“;

// rec_rmdir - loesche ein Verzeichnis rekursiv
// Rueckgabewerte:
//   0  - alles ok
//   -1 - kein Verzeichnis
//   -2 - Fehler beim Loeschen
//   -3 - Ein Eintrag eines Verzeichnisses war keine Datei und kein Verzeichnis und
//        kein Link

function rec_rmdir ($path) {
    // schau' nach, ob das ueberhaupt ein Verzeichnis ist
    if (!is_dir ($path)) {
        return -1;
    }

    // oeffne das Verzeichnis
    $dir = @opendir ($path);
    
    // Fehler?
    if (!$dir) {
        return -2;
    }
    
    // gehe durch das Verzeichnis
    while ($entry = @readdir($dir)) {
        // wenn der Eintrag das aktuelle Verzeichnis oder das Elternverzeichnis
        // ist, ignoriere es
        if ($entry == '.' || $entry == '..') continue;
        // wenn der Eintrag ein Verzeichnis ist, dann 
        if (is_dir ($path.'/'.$entry)) {
            // rufe mich selbst auf
            $res = rec_rmdir ($path.'/'.$entry);
            // wenn ein Fehler aufgetreten ist
            if ($res == -1) { // dies duerfte gar nicht passieren
                @closedir ($dir); // Verzeichnis schliessen
                return -2; // normalen Fehler melden
            } else if ($res == -2) { // Fehler?
                @closedir ($dir); // Verzeichnis schliessen
                return -2; // Fehler weitergeben
            } else if ($res == -3) { // nicht unterstuetzer Dateityp?
                @closedir ($dir); // Verzeichnis schliessen
                return -3; // Fehler weitergeben
            } else if ($res != 0) { // das duerfe auch nicht passieren...
                @closedir ($dir); // Verzeichnis schliessen
                return -2; // Fehler zurueck
            }
        } else if (is_file ($path.'/'.$entry) || is_link ($path.'/'.$entry)) {
            // ansonsten loesche diese Datei / diesen Link
            $res = @unlink ($path.'/'.$entry);
            // Fehler?
            if (!$res) {
                @closedir ($dir); // Verzeichnis schliessen
                return -2; // melde ihn
            }
        } else {
            // ein nicht unterstuetzer Dateityp
            @closedir ($dir); // Verzeichnis schliessen
            return -3; // tut mir schrecklich leid...
        }
    }
    
    // schliesse nun das Verzeichnis
    @closedir ($dir);
    
    // versuche nun, das Verzeichnis zu loeschen
    $res = @rmdir ($path);
    
    // gab's einen Fehler?
    if (!$res) {
        return -2; // melde ihn
    }
    
    // alles ok
    return 0;
}

?>

Wie Ihr seht kenn ich mich nicht aus. Auch wenn ich im gleichen Verzeichnis wie die index.php die Datei recrmdir.inc.php hineinstelle und die index.php wie folgt aussieht, funktioniert es nicht.

<?php
$path = „NeuerOrdner“;
require 'recrmdir.inc.php';
?>

Bitte welche Fehler mache ich bei der Parameter Übergabe? Danke schon mal für eure Hilfe!

GLG Margit