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(2)
Oct 09 PHP
php 用sock技术发送邮件的函数
Jul 21 PHP
php中global和$GLOBALS[]的分析之一
Feb 02 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
php通过strpos查找字符串出现位置的方法
Mar 17 PHP
php检测文本的编码
Jul 26 PHP
php实现复制移动文件的方法
Jul 29 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
php插入mysql数据返回id的方法
May 31 PHP
php5.x禁用eval的操作方法
Oct 19 PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 PHP
thinkphp 框架数据库切换实现方法分析
May 18 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
php4的session功能评述(三)
2006/10/09 PHP
php将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
2014/03/20 Javascript
树结构之JavaScript
2017/01/24 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
Django 实现下载文件功能的示例
2018/03/06 Python
TensorFlow实现模型评估
2018/09/07 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
Python 去除字符串中指定字符串
2020/03/05 Python
浅谈Python中re.match()和re.search()的使用及区别
2020/04/14 Python
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
房产销售经理职责
2013/12/20 职场文书
个人简历中的自我评价怎么写
2014/01/26 职场文书
模具专业求职信
2014/06/26 职场文书
办公室禁烟通知
2015/04/23 职场文书
清明节文明祭祀倡议书
2015/04/28 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis