Для этого нет встроенной функции, но см. Комментарии внизу http://us3.php.net/rmdir. Ряд комментаторов разместили свои собственные рекурсивные функции удаления каталогов. Вы можете выбрать из них.
Вот тот, который выглядит прилично :
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);
}
Редактировать: Вы можете просто вызвать rm -rf
, если хотите, чтобы все было просто. Это делает ваш скрипт только для UNIX, так что будьте осторожны. Если вы пойдете по этому пути, я бы попробовал что-то вроде:
function deleteDirectory($dir) {
system('rm -rf ' . escapeshellarg($dir), $retval);
return $retval == 0; // UNIX commands return zero on success
}