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 相关文章推荐
快速配置PHPMyAdmin方法
Jun 05 PHP
用PHP调用Oracle存储过程的方法
Sep 12 PHP
PHP 创建文件(文件夹)以及目录操作代码
Mar 04 PHP
通俗易懂的php防注入代码
Apr 07 PHP
PHP静态调用非静态方法的应用分析
May 02 PHP
php中实现xml与mysql数据相互转换的方法
Dec 25 PHP
php将字符串全部转换成大写或者小写的方法
Mar 17 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
php关联数组快速排序的方法
Apr 17 PHP
PHP实现动态web服务器方法
Jul 29 PHP
WordPress分页伪静态加html后缀
Jun 08 PHP
PHP函数引用返回的实例详解
Sep 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
深入密码加salt原理的分析
2013/06/06 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
smarty中js的调用方法示例
2014/10/27 PHP
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
详解Vue中的scoped及穿透方法
2019/04/18 Javascript
Vue 实现简易多行滚动&quot;弹幕&quot;效果
2020/01/02 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
web.py中调用文件夹内模板的方法
2014/08/26 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
2015年教学工作总结
2015/04/02 职场文书
2016年端午节寄语
2015/12/04 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
python开发飞机大战游戏
2021/07/15 Python
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript