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。你想达到什么目标?