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

Разработка Зотиков Сергей 7 комментариев

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

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

PHP
<?php
function RDir($path)
{
    // если путь существует и это папка
    if (file_exists($path) && is_dir($path)) {
        // открываем папку
        $dir = opendir($path);
        while (false !== ($element = readdir($dir))) {
            // удаляем только содержимое папки
            if ($element != '.' && $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);
        }
    }
}

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

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

Комментарии 7

  1. Сергей

    А как сделать так, чтобы можно было удалить несколько определенных папок за один запуск скрипта?

    1. Сергей Зотиков

      Несколько раз вызвать в нем RDir(), примерно так:

      PHP
      RDir( $_SERVER['DOCUMENT_ROOT']. '/example' );
      RDir( $_SERVER['DOCUMENT_ROOT']. '/example2' );
  2. Хусейн

    А как удалять папки не знаю их названия? Допустим хочу просто удалить 10 папок

Поддерживаются `код`, **жирный**, *курсив* и блоки кода

Как оформить
ПишетеПолучится
`npm install`код в строке: npm install
```bash
npm install
npm run build
```
блок кода: три обратные кавычки — отдельной строкой до и после кода; язык подсветки (bash, php, sql) — по желанию, сразу после первых кавычек
**важно**важно
*термин*термин
https://example.comссылка: адрес достаточно вставить как есть
Наверх