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 相关文章推荐
手把手教你打印出PDF(关于fpdf的简单应用)
Jun 25 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
浅析php中json_encode()和json_decode()
May 25 PHP
ThinkPHP登录功能的实现方法
Aug 20 PHP
在WordPress中实现发送http请求的相关函数解析
Dec 29 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
PHP全功能无变形图片裁剪操作类与用法示例
Jan 10 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
Feb 23 PHP
php实时倒计时功能实现方法详解
Feb 27 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
Laravel框架自定义验证过程实例分析
Feb 01 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 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
使用Thinkphp框架开发移动端接口
2015/08/05 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
angularjs基础教程
2014/12/25 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
高考考python编程是真的吗
2020/07/20 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
python中常用的数据结构介绍
2021/01/12 Python
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
JAVA代码查错题
2014/10/10 面试题
Java程序员面试题
2016/09/27 面试题
毕业生自荐信的主要内容
2013/10/29 职场文书
幼儿园教师辞职信
2014/01/18 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
行政办公室岗位职责
2014/03/18 职场文书
激励口号大全
2014/06/17 职场文书
委托书如何写
2014/08/30 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL