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相当简单的分页类
Oct 02 PHP
php 验证码制作(网树注释思想)
Jul 20 PHP
php生成excel列序号代码实例
Dec 24 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
PHP中使用json数据格式定义字面量对象的方法
Aug 20 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
Aug 07 PHP
Swoole 5将移除自动添加Event::wait()特性详解
Jul 10 PHP
PHP命名空间用法实例分析
Sep 04 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中使用Oracle数据库(4)
2006/10/09 PHP
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
分享PHP守护进程类
2015/12/30 PHP
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
2018/11/06 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
PyQt5每天必学之拖放事件
2020/08/27 Python
Python3中详解fabfile的编写
2018/06/24 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
python怎么调用自己的函数
2020/07/01 Python
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
介绍一下常见的木马种类
2014/11/15 面试题
医学生自荐信范文
2013/12/03 职场文书
上课玩手机检讨书
2014/02/08 职场文书
小班秋游活动方案
2014/02/22 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
教学督导岗位职责
2015/04/10 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript
Pygame Event事件模块的详细示例
2021/11/17 Python