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 GD绘制24小时柱状图
Jun 28 PHP
php 无限级数据JSON格式及JS解析
Jul 17 PHP
深入PHP数据缓存的使用说明
May 10 PHP
php获取中文拼音首字母类和函数分享
Apr 24 PHP
ThinkPHP之N方法实例详解
Jun 20 PHP
PHP中使用虚代理实现延迟加载技术
Nov 05 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
php实现curl模拟ftp上传的方法
Jul 29 PHP
利用PHP将部分内容用星号替换
Apr 21 PHP
PHP中的session安全吗?
Jan 22 PHP
thinkphp5.1框架容器与依赖注入实例分析
Jul 23 PHP
php双向队列实例讲解
Nov 17 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数据库(2)
2006/10/09 PHP
php获取网页标题和内容函数(不包含html标签)
2014/02/03 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
JS动画效果代码3
2008/04/03 Javascript
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
jQuery实现新消息闪烁标题提示的方法
2015/03/11 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
2016/06/18 Javascript
JS实现页面进入和返回定位到具体位置
2016/12/08 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
Python 使用office365邮箱的示例
2020/10/29 Python
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
煤矿班组长的职责
2013/12/25 职场文书
企业演讲稿范文
2013/12/28 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
小学科学课教学反思
2016/02/23 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL