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模拟HTTP认证
Oct 09 PHP
无数据库的详细域名查询程序PHP版(3)
Oct 09 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
Feb 22 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
php实现格式化多行文本为Js可用格式
Apr 15 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
详解PHP原生DOM对象操作XML的方法
Oct 17 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 PHP
laravel 5.5 关闭token的3种实现方式
Oct 24 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
Apache服务器无法使用的解决方法
2013/05/08 PHP
Drupal7中常用的数据库操作实例
2014/03/02 PHP
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
javascript相关事件的几个概念
2015/05/21 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
基于canvas粒子系统的构建详解
2017/08/31 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
python 多线程重启方法
2019/02/18 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
新浪网技术部笔试题
2016/08/26 面试题
护理实习自我鉴定
2013/12/14 职场文书
致标枪运动员广播稿
2014/02/06 职场文书
《匆匆》教学反思
2014/02/22 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
副总经理岗位职责
2015/02/02 职场文书
文言文辞职信
2015/02/28 职场文书
结婚通知短信大全
2015/04/17 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
详解php中流行的rpc框架
2021/05/29 PHP
python中subplot大小的设置步骤
2021/06/28 Python