删除里面的目录和目录

时间:2014-03-17 20:19:39

标签: php filesystems directory unlink rmdir

我想删除一个目录及其所有子目录。

$folders('users','users/100282','users/100282/test');
array_map("rmdir",array_reverse($folders));

不幸的是,这不起作用。我得到2个错误,说该目录不为空。如果我刷新,只有1个错误,如果我再次刷新,不再有错误。


发生的事情是脚本尝试在上一个任务被取消之前删除父目录,这会使该文件夹非空。 如何解决此问题?

1 个答案:

答案 0 :(得分:2)

使用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
}

?>