我想删除一个目录及其所有子目录。
$folders('users','users/100282','users/100282/test');
array_map("rmdir",array_reverse($folders));
不幸的是,这不起作用。我收到 2 个错误,说目录不为空。如果我刷新,只有 1 个错误,如果我再次刷新,没有更多的错误。
发生的情况是脚本尝试在前一个任务执行之前删除父目录,这使得文件夹非空。我该如何解决?
我想删除一个目录及其所有子目录。
$folders('users','users/100282','users/100282/test');
array_map("rmdir",array_reverse($folders));
不幸的是,这不起作用。我收到 2 个错误,说目录不为空。如果我刷新,只有 1 个错误,如果我再次刷新,没有更多的错误。
发生的情况是脚本尝试在前一个任务执行之前删除父目录,这使得文件夹非空。我该如何解决?
使用RecursiveIteratorIterator这样的事情怎么样:
<?php
/**
* Recursive directory remover.
*
* @param string $dir
* @return bool
*/
function destroy_dir($dir) {
foreach(new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS),
RecursiveIteratorIterator::CHILD_FIRST) as $path) {
//remove file or folder
$path->isFile() ? unlink($path->getPathname()) : rmdir($path->getPathname());
}
return rmdir($dir);
}
//usage
$dir = './users';
//checks
if(is_dir($dir)){
//call
if(destroy_dir($dir)){
//directory removed
}else{
//error removing directory
}
}else{
//users directory not found
}
?>