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 — supprimer le répertoire
Signaler un bug Description
bool rmdir ( string $dirname )
Essayez de supprimer le répertoire spécifié par dirname Table des matières. Le répertoire doit être vide et doit disposer des autorisations appropriées. Renvoie TRUE en cas de succès ou FALSE en cas d'échec
Remarque : depuis PHP 5.0.0, rmdir() peut également être utilisé avec certains protocoles d'encapsulation d'URL. Consultez la liste des protocoles et wrappers pris en charge pour voir quels protocoles d'encapsulage d'URL sont pris en charge par rmdir().
Remarque : la prise en charge du contexte a été ajoutée dans PHP 5.0.0. Voir la fonction Stream pour une description du contexte.
Remarque : lorsque le mode sans échec est activé, PHP vérifiera si le répertoire manipulé par le script a le même UID (propriétaire) que le script en cours d'exécution lors de l'exécution du script.
Voir mkdir() et 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); } ?>
Pour plus d'articles liés à la suppression récursive de répertoires et de fichiers sous des répertoires dans rrmdir php, veuillez faire attention au site Web PHP chinois !