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 相关文章推荐
PHP 面向对象实现代码
Nov 11 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
php全局变量和类配合使用深刻理解
Jun 05 PHP
php启用sphinx全文搜索的实现方法
Dec 24 PHP
PHP+Ajax实时自动检测是否联网的方法
Jul 01 PHP
Yii列表定义与使用分页方法小结(3种方法)
Jul 15 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
静态html文件执行php语句的方法(推荐)
Nov 21 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
Discuz不使用插件实现简单的打赏功能
Mar 21 PHP
php中Swoole的热更新实现代码实例
Mar 04 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
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
详解PHP中的状态模式编程
2015/08/11 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
微信小程序 两种为对象属性赋值的方式详解
2017/02/23 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
Python中的类学习笔记
2014/09/23 Python
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
python ansible服务及剧本编写
2017/12/29 Python
Python随机数函数代码实例解析
2020/02/09 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
什么是命名空间(NameSpace)
2015/11/24 面试题
前台领班岗位职责
2013/12/04 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
护理专业求职信
2014/06/15 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
Golang 实现获取当前函数名称和文件行号等操作
2021/05/08 Golang
python turtle绘图命令及案例
2021/11/23 Python