Задавайте питання щодо курсів WordPress

Рекурсивне видалення каталогу з файлами на PHP.

Часто стикаюся із завданням видалення папки з усім вкладеним у неї вмістом, а постійно винаходити велосипед набридло, ось знайшов відмінну функцію на PHP, яка рекурсивно біжить по всіх папках, видаляючи файли і після цього каталог.

Ось, власне, і функція:

 function RemoveDir($path)
                     {
                      if(file_exists($path) && is_dir($path))
                      {
                       $dirHandle = opendir($path);
                       Хоча (false !== ($file = readdir($dirHandle)))
                       {
                        if ($file!='.' && $file!='..')// исключаем папки с назварием '.' и '..'
                        {
                         $tmpPath=$path.'/'.$file;
                         chmod($tmpPath, 0777);
                         if (is_dir($tmpPath))
                           {  // если папка
                          RemoveDir($tmpPath);
                            }
                           ще
                           {
                            if(file_exists($tmpPath))
                          {
                           // удаляем файл
                             unlink($tmpPath);
                          }
                           }
                        }
                       }
                       closedir($dirHandle);
                       // удаляем текущую папку
                       if(file_exists($path))
                       {
                        rmdir($path);
                       }
                      }
                      ще
                      {
                       луна "Удаляемой папки не существует или это файл!";
                      }
                     }

 

Опишу трохи логіку цієї функції. Функція отримує як параметр шлях до папки. Перше що вона робить це перевіряє, чи існує ця папка і папка це взагалі якщо результат перевірки позитивний відкриває папку на читання і запускається цикл читання папки, отримання всього її вмісту (папки, файли, посилання) далі не забуваємо виключати папки '.'(точка) і ".."(дві точки) перше – посилання на цей каталог, друге – посилання на каталог рівнем вище. Після цього змінюємо права доступу до файлу або каталогу і якщо це папка, то заходимо в неї і видаляємо все, що в ній, інакше це файл або посилання, і тоді просто видаляємо.

 

Приклад використання функції:

// путь от корня сайта
$DeletedFolder='/folder';
RemoveDir($_СЕРВЕР['DOCUMENT_ROOT'].$DeletedFolder);

Джерело статті: https://slawutich.pp.ua/php/58-removedir-php.html


Купить хостинг WordPress
/* Репетитор по wordpress
Послуги репетитора онлайн. Список курсів, які я веду
  • Базовий курс з веб-дизайну;
  • Верстка сайтів;
  • Загальний курс CMS WordPress та продовження курсу з розробки шаблонів;
  • Розробка сайтів на PHP.
Докладніше читайте на сторінці репетитор по WordPress
*/

Ніколаєнко Максим

Директор веб-студии ProGrafika. Займаюсь розробкою, дизайном та просуванням веб-сайтів. Завжди радий новим читачам блогу та добрим клієнтам.


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються дані ваших коментарів.

Шаблони для WordPress
Найкращий хостинг в Україні
Стабільний хостинг для Drupal