Верх страницы
Обложка к записи Быстрый способ удаления папки на PHP
Время для прочтения: 0 мин. 0 сек.

Быстрый способ удаления папки на PHP

В РНР для удаления файла существует функция unlink(), для удаления пустого каталога — rmdir(). Что делать если нужно рекурсивно удалить папку со всеми файлами и подкаталогами. На помощь приходит glob() в связке с array_map().

Заметьте, что в функции нет ни единого цикла.

function removeDir($path) {
    if (is_file($path)) {
    	@unlink($path);
    } else {
        array_map('removeDir',glob('/*')) == @rmdir($path);
    }
    @rmdir($path);
}

Пример вызова

$path = $_SERVER['DOCUMENT_ROOT'].'/test';
removeDir($path);

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, Opencart, DLE, Laravel, Moonshine, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

20 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Антон
12 лет назад

Спасибо за идею, но у меня эта функция не сработала так, как хотелось бы. Я немного подкорректировал функцию и вызов. Теперь она удаляет указанную папку со всеми подпапками и файлами:

function removeDir($path) {
return is_file($path)?
@unlink($path):
array_map('removeDir',glob($path."/*"))==@rmdir($path);
}

// Пример вызова
$path = $_SERVER['DOCUMENT_ROOT'].'/test';
removeDir($path);

Сергей
Сергей
11 лет назад
Ответить на  Антон

Не работает. Не удаляет самую верхнюю директорию. Вот рабочий пример
function removeDirectory($dir) {
if ($objs = glob($dir.»/*»)) {
foreach($objs as $obj) {
is_dir($obj) ? removeDirectory($obj) : unlink($obj);
}
}
rmdir($dir);
}

Алексей
12 лет назад

А если removeDir в классе определять? Как указывать первый параметр array_map?

sanina
11 лет назад

Вы не правы насчет не используются цикла как рас используются вы применяется callback функцию что рекурсивно вызывается на каждое значение массива

Илья
Илья
11 лет назад

А можете объяснить нубу почему эта функция у меня ругается на фигурные скобки в условии, а если их удалить, то начинает ругаться на собаку?

Илья
Илья
11 лет назад
Ответить на  Кобзарёв Михаил

А, да всё… Я решил проблему — не использую этот скрипт. Всё равно там же используется скрипт создания субдомена через cPanel. Я его немного дописал и он ещё и папки теперь удаляет.

Илья
Илья
11 лет назад

Ну он пишет «неожиданный ‘{‘ на N строке» и тоже самое с @

пупкин
11 лет назад

в стоке 2 не хватает скобки
if (is_file($path) {
вот и ошибка

пупкин
11 лет назад

Вообще чувак cPanel дописывает, такой фигни не заметил =) гы.

Antonio
10 лет назад

Спасибо, пригодилось

Denis Kompaneets
Denis Kompaneets
10 лет назад

серврере ложится надо что-то полегче


Service Temporarily Unavailable
The server closed the connection without sending any data.
The server is temporarily unable to service your request due to maintenance downtime or capacity problems.
Due to heavy load on the server, connections may be temporarily blocked from locations that fetch an unusually high number of pages.
We apologize for the inconvenience.

Предыдущая запись
Следующая запись

Давайте дружить
в Telegram

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы