Как удалить все файлы из папки с помощью php?

Пользователь

от jerrold_langworth , в категории: PHP , год назад

Как удалить все файлы из папки с помощью php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от catherine_wintheiser , год назад

@jerrold_langworth 

Для удаления всех файлов из папки в PHP можно воспользоваться функцией glob() для получения списка файлов, а затем циклом foreach удалить каждый файл с помощью функции unlink().


Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$folder = '/путь/к/папке/'; // путь к папке

// Получаем список файлов в папке
$files = glob($folder . '*');

// Цикл по каждому файлу
foreach ($files as $file) {
    // Удаление файла
    if (is_file($file)) {
        unlink($file);
    }
}


Обратите внимание, что код будет удалять только файлы, а не подпапки. Если вы хотите удалить и файлы и подпапки, вы можете использовать рекурсию, чтобы проходить по всем папкам и удалять файлы:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
function deleteFiles($folder) {
    $files = glob($folder . '*');
    foreach ($files as $file) {
        if (is_file($file)) {
            unlink($file);
        } elseif (is_dir($file)) {
            deleteFiles($file . '/');
            rmdir($file);
        }
    }
}

$folder = '/путь/к/папке/';
deleteFiles($folder);


Здесь функция deleteFiles() будет рекурсивно удалять все файлы и подпапки в заданной папке.

Пользователь

от stephon , 5 месяцев назад

@jerrold_langworth 

Данный подход адаптирован для удаления файлов из определенной папки. Есть также альтернативный способ с использованием встроенной функции PHP scandir(), которая возвращает массив файлов и каталогов в папке:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
$folder = '/путь/к/папке/'; // путь к папке

// Получаем список файлов и каталогов в папке
$files = scandir($folder);

// Цикл по каждому файлу и каталогу
foreach ($files as $file) {
    // Проверяем, что файл не является текущим или родительским каталогом
    if ($file != '.' && $file != '..') {
        $filePath = $folder . $file;
        
        // Удаляем файл или рекурсивно удаляем папку
        if (is_file($filePath)) {
            unlink($filePath);
        } elseif (is_dir($filePath)) {
            deleteFiles($filePath . '/');
            rmdir($filePath);
        }
    }
}


Этот вариант аналогично рекурсивно обрабатывает файлы и подкаталоги в указанной папке для удаления. Оба метода могут быть использованы в зависимости от того, что удобнее и эффективнее в конкретной ситуации.