rrmdir php中递归删除目录及目录下的文件


Posted in PHP onMay 15, 2011
function rrmdir($dir) { 
if (is_dir($dir)) { 
$objects = scandir($dir); 
foreach ($objects as $object) { 
if ($object != “.” && $object != “..”) { 
if (filetype($dir.”/”.$object) == “dir”) rrmdir($dir.”/”.$object); else unlink($dir.”/”.$object); 
} 
} 
reset($objects); 
} 
}

rmdir
(PHP 4, PHP 5)
rmdir — 删除目录
Report a bug 说明
bool rmdir ( string $dirname )
尝试删除 dirname 所指定的目录。 该目录必须是空的,而且要有相应的权限。成功时返回 TRUE, 或者在失败时返回 FALSE.
Note: 自 PHP 5.0.0 起 rmdir() 也可用于某些 URL 封装协议。参见Supported Protocols and Wrappers 的列表看看 rmdir() 支持哪些 URL 封装协议。
Note: 在 PHP 5.0.0 中增加了 对上下文(Context)的支持。有关 上下文(Context) 的说明参见 Stream 函数。
Note: 当启用 安全模式时, PHP 会在执行脚本时检查被脚本操作的目录是否与被执行的脚本有相同的 UID(所有者)。
参见 mkdir() 和 unlink()。
<?php 
function rrmdir($dir) { 
if (is_dir($dir)) { 
$objects = scandir($dir); 
foreach ($objects as $object) { 
if ($object != "." && $object != "..") { 
if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object); 
} 
} 
reset($objects); 
rmdir($dir); 
} 
} 
?>

This isn't my code, but just thought I would share, since it took me so long to find. This is a function to delete a folder, all sub-folders, and files in one clean move.
Just tell it what directory you want deleted, in relation to the page that this function is executed. Then set $empty = true if you want the folder just emptied, but not deleted. If you set $empty = false, or just simply leave it out, the given directory will be deleted, as well.
 
<?php
function deleteAll($directory, $empty = false) {
if(substr($directory,-1) == "/") {
$directory = substr($directory,0,-1);
}
if(!file_exists($directory) || !is_dir($directory)) {
return false;
} elseif(!is_readable($directory)) {
return false;
} else {
$directoryHandle = opendir($directory);
while ($contents = readdir($directoryHandle)) {
if($contents != '.' && $contents != '..') {
$path = $directory . "/" . $contents;
if(is_dir($path)) {
deleteAll($path);
} else {
unlink($path);
}
}
}
closedir($directoryHandle);
if($empty == false) {
if(!rmdir($directory)) {
return false;
}
}
return true;
}
}
?>
[/code]
A patch to previous script to make sure rights for deletion is set:
<?php 
//Delete folder function 
function deleteDirectory($dir) { 
if (!file_exists($dir)) return true; 
if (!is_dir($dir) || is_link($dir)) return unlink($dir); 
foreach (scandir($dir) as $item) { 
if ($item == '.' || $item == '..') continue; 
if (!deleteDirectory($dir . "/" . $item)) { 
chmod($dir . "/" . $item, 0777); 
if (!deleteDirectory($dir . "/" . $item)) return false; 
}; 
} 
return rmdir($dir); 
} 
?>

更多说明可以参考 http://cn.php.net/rmdir
PHP 相关文章推荐
5.PHP的其他功能
Oct 09 PHP
Windows2003 下 MySQL 数据库每天自动备份
Dec 21 PHP
php,ajax实现分页
Mar 27 PHP
功能齐全的PHP发送邮件类代码附详细说明
Jul 10 PHP
php面向对象全攻略 (七) 继承性
Sep 30 PHP
基于MySQL体系结构的分析
May 02 PHP
php网站判断用户是否是手机访问的方法
Nov 01 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
php pdo oracle中文乱码的快速解决方法
May 16 PHP
PHP树-不需要递归的实现方法
Jun 21 PHP
PHP htmlspecialchars_decode()函数用法讲解
Mar 01 PHP
PHP基于ip2long实现IP转换整形
Dec 11 PHP
centos 5.6 升级php到5.3的方法
May 14 #PHP
php中在PDO中使用事务(Transaction)
May 14 #PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 #PHP
PHP与C#分别格式化文件大小的代码
May 14 #PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 #PHP
php 数组的一个悲剧?
May 11 #PHP
php 归并排序 数组交集
May 10 #PHP
You might like
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
需要发散思维学习PHP
2009/06/29 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
2010/08/01 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
ecshop添加菜单及权限分配问题
2017/11/21 PHP
php微信公众号开发之简答题
2018/10/20 PHP
PHP实现百度人脸识别
2019/05/06 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
js 窗口抖动示例
2013/09/04 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
JavaScript作用域链实例详解
2019/01/21 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
JS实现密码框效果
2020/09/10 Javascript
[08:44]和酒神一起战斗 DOTA2教你做大人
2014/03/27 DOTA
python使用webbrowser浏览指定url的方法
2015/04/04 Python
python类中super()和__init__()的区别
2016/10/18 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
tensorflow获取变量维度信息
2018/03/10 Python
Python检测网络延迟的代码
2018/05/15 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
django和flask哪个值得研究学习
2020/07/31 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
中国宠物用品商城:E宠商城
2016/08/27 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
毕业生在校学习的自我评价分享
2013/10/08 职场文书
信息技术课后反思
2014/04/27 职场文书
个人存款证明书
2014/10/18 职场文书
大学生个人总结范文
2015/02/15 职场文书