Как удалить папку с её содержимым на php

Как удалить папку с её содержимым на php

Функция RDir рекурсивно удаляет паку, т.е. удаляет саму папку, а также все подпапки и файлы находящиеся в ней.

Ниже привожу код функции с комментариями:

function RDir( $path ) {
 // если путь существует и это папка
 if ( file_exists( $path ) AND is_dir( $path ) ) {
   // открываем папку
    $dir = opendir($path);
    while ( false !== ( $element = readdir( $dir ) ) ) {
      // удаляем только содержимое папки
      if ( $element != '.' AND $element != '..' )  {
        $tmp = $path . '/' . $element;
        chmod( $tmp, 0777 );
       // если элемент является папкой, то
       // удаляем его используя нашу функцию RDir
        if ( is_dir( $tmp ) ) {
         RDir( $tmp );
       // если элемент является файлом, то удаляем файл
        } else {
          unlink( $tmp );
       }
     }
   }
   // закрываем папку
    closedir($dir);
    // удаляем саму папку
   if ( file_exists( $path ) ) {
     rmdir( $path );
   }
 }
}

Пример использования:

$dir = $_SERVER['DOCUMENT_ROOT'] . '/example';
RDir( $dir );

Комментарии ()

  1. oazet 18 декабря 2013, 10:21 # 0
    Кулл, благодарю за рабочий код!
    1. Влад 31 октября 2016, 14:02 # 0
      Работает! Спасибо.
      1. Сергей 12 июля 2017, 18:53 # 0
        А как сделать так, чтобы можно было удалить несколько определенных папок за один запуск скрипта?
        1. Сергей Зотиков 13 июля 2017, 20:40 # 1 0
          Несколько раз вызвать в нем RDir(), примерно так:
          RDir( $_SERVER['DOCUMENT_ROOT']. '/example' );
          RDir( $_SERVER['DOCUMENT_ROOT']. '/example2' );
        2. Хусейн 24 сентября 2018, 13:03 # 0
          А как удалять папки не знаю их названия? Допустим хочу просто удалить 10 папок
          1. Alexandr 24 ноября 2018, 03:17 # 1 0
            Через цикл не пробовал?
          2. Исмаил 06 августа 2020, 13:47 # 0
            А где файл надо указывать?