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 相关文章推荐
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
php 攻击方法之谈php+mysql注射语句构造
Oct 30 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
解析PHP无限级分类方法及代码
Jun 21 PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 PHP
CMS中PHP判断系统是否已经安装的方法示例
Jul 26 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
最新最全PHP生成制作验证码代码详解(推荐)
Jun 12 PHP
php将文件夹打包成zip文件的简单实现方法
Oct 04 PHP
PHP getName()函数讲解
Feb 03 PHP
PHP 并发场景的几种解决方案
Jun 14 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
Apr 23 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
咖啡的种类和口感
2021/03/03 新手入门
PHP中将数组转成XML格式的实现代码
2011/08/08 PHP
PHP session会话的安全性分析
2011/09/08 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
php 利用socket发送GET,POST请求的实例代码
2020/07/04 PHP
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
美国高街时尚品牌:OASAP
2016/07/24 全球购物
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
C#面试问题
2016/07/29 面试题
体育教育毕业生自荐信
2013/11/21 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
行政处罚决定书
2015/06/24 职场文书
2015年教师个人业务工作总结
2015/10/23 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL
使用Python解决图表与画布的间距问题
2022/04/11 Python