Верх страницы
Обложка к записи Быстрый способ удаления папки на 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);
ВКонтакте
Одноклассники
Linkedin
Telegram
WhatsApp

Комментарии
Подписаться
Уведомить о
guest
20 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Антон
9 лет назад

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

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

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

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

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

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

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

sanina
8 лет назад

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

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

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

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

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

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

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

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

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

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

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

Antonio
7 лет назад

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

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

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


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.