Очень часто нужно удалить рекурсивно папку с картинками средствами PHP. Как удалить папку с данными PHP? Тут несколько способов реализации. Вся сложность заключается в том, что сначала нужно удалить все картинки в папке и только потом удалить папку. Самый простой способ - это использовать BASH, но у нас несколько иная задача на PHP.
/*
* removeDirectory($dir)
* удаление директории + удаление файлов в директории
* */
function removeDirectory($dir) {
if ($objs = glob($dir."/*")) {
foreach($objs as $obj) {
is_dir($obj) ? removeDirectory($obj) : unlink($obj);
}
}
rmdir($dir);
}
removeDirectory('../f1');
Создайте папку f1 и наполните её картинками. Расположите скрипт рядом с папкой. Затем примените функцию removeDirectory(). Рассмотрим тело функции removeDirectory(). Функция glob() ищет все пути, совпадающие с шаблоном согласно правилам. Цикл foreach пробегается по массиву. Условие проверяет является ли элемент массива файлом или папкой. Если элемент массива папка, то функция запускает саму себя. Если элемент массива файл (картинка), то выполняется функция unlink(). Эта функция удалит файл. Как только будут удалены все картинки в папке, то будет запущена функция rmdir(). Она удалит пустую папку.
Допустим вам нужно удалить старую папку или файл? Например, папка создана час назад и вам нужно удалить её через час. Тут поможет функция filemtime.
$folder = "./folder1/";
if(file_exists($folder))
{
$curTime = time();
$getDateCreate = filemtime($folder);
$countMin = ($getDateCreate - $curTime) / 60;
$countSec = ($getDateCreate - $curTime);
$countMin = round($countMin, 1);
echo "min: ".$countMin.", sec: ".$countSec;
}
else
{
echo "нет файла!";
}
// вывод: min: -12.6, sec: -753
Вы можете просканировать текущую директорию и при помощи цикла удалить найденные папки. О том как просканировать файлы и папки в текущей директории читайте статью как просмотреть содержимое папки scandir() PHP.