Удаление каталога и его содержимого

Задача
Необходимо удалить каталог и все его содержимое, включая подкаталоги и их содержимое.

Решение
В UNIX надо выполнить команду rm:

$directory = escapeshellarg($directory);
exec("rm -rf $directory");
В Windows – команду rmdir:
$directory = escapeshellarg($directory);
exec("rmdir /s /q $directory");

Обсуждение
Очевидно, что удаление файлов может быть опасным. Не забудьте вызвать функцию escapeshellarg() для переменной $directory, чтобы не удалить непредусмотренные файлы.
Поскольку встроенная в PHP функция rmdir(), которая удаляет каталоги, работает только с пустыми каталогами, а функция unlink() не принимает групповые символы оболочки, то вызов системной программы намного легче, чем рекурсивное выполнение цикла по всем файлам в каталоге с их удалением и последующим удалением каждого каталога. Однако если внешняя утилита недоступна, то для удаления каждого подкаталога можно модифицировать функцию.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Изменение прав доступа к файлу или его владельца
Копирование и перемещение файла
Обработка всех файлов в каталоге
Обработка всех файлов в каталоге
Получение и установка меток даты/времени файла

Вернуться в раздел: PHP / 19. Каталоги