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下MAIL的另一解决方案
Oct 09 PHP
ADODB类使用
Nov 25 PHP
转PHP手册及PHP编程标准
Dec 17 PHP
PHP常用函数小技巧
Sep 11 PHP
php 破解防盗链图片函数
Dec 09 PHP
PHP系列学习之日期函数使用介绍
Aug 18 PHP
php eval函数用法总结
Oct 31 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
Mar 13 PHP
php实现生成code128条形码的方法详解
Jul 19 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
Feb 20 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
May 02 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
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
PHP自动选择 连接本地还是远程数据库
2010/12/02 PHP
php中autoload的用法总结
2013/11/08 PHP
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
基于php的微信公众平台开发入门实例
2015/04/15 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
Javascript学习笔记二 之 变量
2010/12/15 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
基于jQuery的公告无限循环滚动实现代码
2012/05/11 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
详解django三种文件下载方式
2018/04/06 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
python递归实现快速排序
2018/08/18 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
医学院学生的自我评价分享
2013/11/19 职场文书
自主招生自荐信指南
2014/02/04 职场文书
学校社会实践活动总结
2014/07/03 职场文书
商场促销活动总结
2014/07/10 职场文书
理财计划书
2014/08/14 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
横空出世观后感
2015/06/09 职场文书
企业安全生产规章制度
2015/08/06 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android