PHP:Самый простой способ удалить папку (включая ее содержимое)
-
18-09-2019 - |
Вопрос
Тот Самый rmdir()
функция завершается с ошибкой, если в папке содержатся какие-либо файлы.Я могу перебрать все файлы в каталоге с помощью чего-то вроде этого:
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') continue;
unlink($dir.DIRECTORY_SEPARATOR.$item);
}
rmdir($dir);
Есть ли какой-нибудь способ просто удалить все это сразу?
Решение
Что ж, всегда есть
system('/bin/rm -rf ' . escapeshellarg($dir));
там, где это возможно.
Другие советы
rrmdir()
-- рекурсивное удаление каталогов:
function rrmdir($dir) {
foreach(glob($dir . '/*') as $file) {
if(is_dir($file)) rrmdir($file); else unlink($file);
} rmdir($dir);
}
function delete_files($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir")
delete_files($dir."/".$object);
else unlink ($dir."/".$object);
}
}
reset($objects);
rmdir($dir);
}
}
Согласно это Источник;
Сэкономьте немного времени, если вы хотите очистить каталог или удалить его, и вы работаете в Windows.
Используй Это:
chdir ($file_system_path);
exec ("del *.* /s /q");
Вы можете использовать другой синтаксис DEL или любую другую утилиту оболочки.Возможно, вам придется разрешить сервису взаимодействовать с рабочим столом, так как это моя текущая настройка, и я не буду изменять ее, чтобы протестировать это.
В противном случае вы могли бы найти альтернативный метод вот.
Попробуй это :
exec('rm -rf '.$user_dir);
Эта функция удаляет каталог и все подкаталоги и файлы:
function DelDir($target) {
if(is_dir($target)) {
$files = glob( $target . '*', GLOB_MARK ); //GLOB_MARK adds a slash to directories returned
foreach( $files as $file )
{
DelDir( $file );
}
rmdir( $target );
} elseif(is_file($target)) {
unlink( $target );
}
}
Одна безопасная и полезная функция, расположенная в комментариях php от lprent Она предотвращает случайное удаление содержимого каталогов символических ссылок, расположенных в текущем каталоге
public static function delTree($dir) {
$files = array_diff(scandir($dir), array('.','..'));
foreach ($files as $file) {
(is_dir("$dir/$file") && !is_link($dir)) ? delTree("$dir/$file") : unlink("$dir/$file");
}
return rmdir($dir);
}