Non esiste alcuna funzione incorporata per eseguire questa operazione, ma vedere i commenti nella parte inferiore di http://us3.php.net/rmdir. Un certo numero di commentatori ha pubblicato le proprie funzioni di cancellazione delle directory ricorsive. Puoi scegliere tra quelli.
Ecco one that looks decent:
function deleteDirectory($dir) {
if (!file_exists($dir)) {
return true;
}
if (!is_dir($dir)) {
return unlink($dir);
}
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') {
continue;
}
if (!deleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) {
return false;
}
}
return rmdir($dir);
}
Edit: si può solo richiamare rm -rf
se si vuole mantenere le cose semplici. Questo rende il tuo script solo per UNIX, quindi fai attenzione. Se segui questa strada, proverei qualcosa del tipo:
function deleteDirectory($dir) {
system('rm -rf ' . escapeshellarg($dir), $retval);
return $retval == 0; // UNIX commands return zero on success
}
fonte
2009-10-31 08:26:46
Eventuali duplicati di [Come posso ricorsivamente cancellare una directory e tutto il suo contenuto (file + sottodirectory) in PHP?] (http://stackoverflow.com/questions/3338123/how-do-i-recursively-delete-a-directory-and-its-entire-contents-files-sub-dir) – MaxiWheat