PHP以递归方式删除文件夹

时间:2012-10-07 07:32:52

标签: php recursion unlink rmdir

这是我用来递归删除文件夹和文件的功能

function rmdir_recursively($dir) {
    if (!is_dir($dir) || is_link($dir)) return unlink($dir); 
        foreach (scandir($dir) as $file) { 
            if ($file == '.' || $file == '..') continue; 
            if (!rmdir_recursively($dir . DIRECTORY_SEPARATOR . $file)) { 
                chmod($dir . DIRECTORY_SEPARATOR . $file, 0777); 
                if (!rmdir_recursively($dir . DIRECTORY_SEPARATOR . $file)) return false; 
            }; 
        } 
        return rmdir($dir); 
}

问题是,当我在root中发送一些文件夹时,它会删除此文件夹。但是当我像那样发送根文件夹

rmdir_recursively("./");

它会返回一堆错误,如下所示

PHP Warning:  unlink(.//wp/wp-admin/network) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in /home/vefa/public_html/deploy.php on line 52
[07-Oct-2012 02:16:09] PHP Warning:  unlink(.//wp/wp-admin/user) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in /home/vefa/public_html/deploy.php on line 52
[07-Oct-2012 02:16:09] PHP Warning:  unlink(.//wp/wp-content) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in /home/vefa/public_html/deploy.php on line 52
[07-Oct-2012 02:16:09] PHP Warning:  unlink(.//wp/wp-content/plugins) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in /home/vefa/public_html/deploy.php on line 52
[07-Oct-2012 02:16:09] PHP Warning:  unlink(.//wp/wp-content/plugins/akismet) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in /home/vefa/public_html/deploy.php on line 52

我错过了什么?

1 个答案:

答案 0 :(得分:1)

你说你发送的是rmdir_recursively("./");

但是看看代码,你后来打电话给rmdir_recursively($dir . DIRECTORY_SEPARATOR . $file)

这意味着您将尝试删除“.//”。

中的文件

这就是您的错误消息包含unlink(.//wp/wp-admin/user)

的原因

改为使用rmdir_recursively(".");