PHP递归删除文件夹

PHP递归删除文件夹,php,recursion,unlink,rmdir,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_recursive

这是我用来递归删除文件夹和文件的函数

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); 
}
问题是,当我在根目录中发送某个文件夹时,它会删除该文件夹。但当我像那样发送根文件夹时

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
PHP警告:取消链接(.//wp/wp admin/network)[]:第52行的/home/vefa/public\u html/deploy.PHP中没有这样的文件或目录
[07-Oct-2012 02:16:09]PHP警告:取消链接(.//wp/wp admin/user)[]:第52行的/home/vefa/public_html/deploy.PHP中没有此类文件或目录
[07-Oct-2012 02:16:09]PHP警告:取消链接(.//wp/wp content)[]:第52行的/home/vefa/public_html/deploy.PHP中没有此类文件或目录
[07-Oct-2012 02:16:09]PHP警告:取消链接(.//wp/wp content/plugins)[]:第52行的/home/vefa/public_html/deploy.PHP中没有此类文件或目录
[07-Oct-2012 02:16:09]PHP警告:取消链接(.//wp/wp content/plugins/akismet)[]:第52行的/home/vefa/public_html/deploy.PHP中没有此类文件或目录

我遗漏了什么?

你说你在递归地(“./”)发送它
rmdir\u

但是看看代码,您稍后将递归调用
rmdir\u($dir.DIRECTORY\u SEPARATOR.$file)

这意味着您将尝试删除“//”中的文件

这就是为什么错误消息包含
取消链接(.//wp/wp admin/user)


递归地使用
rmdir_(“.”)代替。

为什么不在一行中执行:
exec('rm-fr$path')@JvdBerg 2个问题:它能在共享服务器上工作吗?以及如何从删除中排除脚本本身?大多数共享主机都允许您这样做。@JvdBerg如何排除脚本本身?您可以修改访问权限,或使用“与exec一起查找”删除和排除脚本。或者将ecript移开、删除,然后再向后移动。该操作系统用于文件处理,而不是php。你想达到什么目标?