Verzeichnis löschen (rekursiv)

mtk-flo

Erfahrenes Mitglied
Hallo,

ich benutzte folgendes Script:
PHP:
<?php
$path="/mnt/web8/41/41/51117241/htdocs/dev/xml/Mein_Verzeichnis/";

if ($handle = opendir($path)) {
    for (;false !== ($file = readdir($handle));) {
        if($file != "." && $file != "..") {
            if(unlink($path.$file)) 
              $info .= "Datei '".$file."' wurde gelöscht<BR>";
            else 
              $info .= "Fehler beim löschen der Datei '".$file."'<BR>";
        }
    }
    closedir($handle);
    if(!rmdir($path)) 
      $info .="<BR>Fehler beim Löschen des Verzeichnises '".$path."'";
    else 
      $info .= "<BR>Verzeichnis '".$path."' wurde gelöscht";
} else 
  $info .= "Problem beim Löschen des Verzeichnises";
?>

Jedoch erstellt der Server beim Löschen irgendwie temporäre Dateien und deswegen kann am Ende das Verzeichnis nicht gelöscht werden, weil ja noch Dateien im Verzeichnis sind.

Was mach ich falsch !?
Oder ist der Server zu langsam ?

Gruß,
mtk-flo
 
Hi,

es wird wohl eher daran liegen, dass du nur Dateien löscht, aber keine Verzeichnisse.
unlink() löscht nur Dateien.

Rekursiv löschen kannst du mir mit einer Funktion, die sich selbst aufruft, wenn ein Verzeichnis gelöscht werden soll. Was du da hast ist nicht rekursiv.

Ich benutze in vielen meiner Skripte folgende rekursive Funktion:
PHP:
//Verzeichnis mit allen Dateien entfernen (rekursiv)
function remove_dir($dir) {
	if (file_exists($dir)) {
		$handle = opendir($dir);
		while ($file = readdir($handle)) {
			if ($file != "." && $file != "..") {
				if (is_dir($dir."/".$file)) {
					remove_dir($dir."/".$file);
				} else {
					unlink($dir."/".$file);
				}
			}
		}
		rmdir($dir);
		closedir($handle);
	}
}


Gruß
 
Zuletzt bearbeitet:
Sorry, war ein denkfehler von mir...
Muss gar net rekursiv löschen...


Aber das Lsöchen eines einzigen Verzeichnises und dessen Inhalt macht mir halt probleme....
 
Zurück