function rrmdir($dir) { if (is_dir($dir)) { $objects = scandir($dir); foreach ($objects as $object) { if ($object != “.” && $object != “..”) { if (filetype($dir.”/”.$object) == “dir”) rrmdir($dir.”/”.$object); else unlink($dir.”/”.$object); } } reset($objects); } }
rmdir
(PHP 4, PHP 5)
rmdir – Verzeichnis löschen
Fehler melden Beschreibung
bool rmdir ( string $dirname )
Versuchen Sie, das angegebene Verzeichnis zu löschen von dirname Inhaltsverzeichnis. Das Verzeichnis muss leer sein und über entsprechende Berechtigungen verfügen. Gibt TRUE bei Erfolg oder FALSE bei Fehler zurück.
Hinweis: Ab PHP 5.0.0 kann rmdir() auch mit bestimmten URL-Wrapping-Protokollen verwendet werden. Sehen Sie sich die Liste der unterstützten Protokolle und Wrapper an, um zu sehen, welche URL-Wrapping-Protokolle rmdir() unterstützt.
Hinweis: Unterstützung für Kontext wurde in PHP 5.0.0 hinzugefügt. Eine Beschreibung des Kontexts finden Sie in der Stream-Funktion.
Hinweis: Wenn der abgesicherte Modus aktiviert ist, prüft PHP bei der Ausführung des Skripts, ob das vom Skript manipulierte Verzeichnis dieselbe UID (Eigentümer) wie das ausgeführte Skript hat.
Siehe mkdir() und unlink().
<?php function rrmdir($dir) { if (is_dir($dir)) { $objects = scandir($dir); foreach ($objects as $object) { if ($object != "." && $object != "..") { if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object); } } reset($objects); rmdir($dir); } } ?>
<?php function deleteAll($directory, $empty = false) { if(substr($directory,-1) == "/") { $directory = substr($directory,0,-1); } if(!file_exists($directory) || !is_dir($directory)) { return false; } elseif(!is_readable($directory)) { return false; } else { $directoryHandle = opendir($directory); while ($contents = readdir($directoryHandle)) { if($contents != '.' && $contents != '..') { $path = $directory . "/" . $contents; if(is_dir($path)) { deleteAll($path); } else { unlink($path); } } } closedir($directoryHandle); if($empty == false) { if(!rmdir($directory)) { return false; } } return true; } } ?> [/code] A patch to previous script to make sure rights for deletion is set:
<?php //Delete folder function function deleteDirectory($dir) { if (!file_exists($dir)) return true; if (!is_dir($dir) || is_link($dir)) return unlink($dir); foreach (scandir($dir) as $item) { if ($item == '.' || $item == '..') continue; if (!deleteDirectory($dir . "/" . $item)) { chmod($dir . "/" . $item, 0777); if (!deleteDirectory($dir . "/" . $item)) return false; }; } return rmdir($dir); } ?>
Weitere Artikel zum rekursiven Löschen von Verzeichnissen und Dateien unter Verzeichnissen in rrmdir php finden Sie auf der chinesischen PHP-Website!