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 09 PHP
人大复印资料处理程序_输入篇
Oct 09 PHP
PHP 单引号与双引号的区别
Nov 24 PHP
PHP临时文件的安全性分析
Jul 04 PHP
PHP类的反射用法实例
Nov 03 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
php生成html文件方法总结
Dec 01 PHP
php+ajax实现文章自动保存的方法
Dec 30 PHP
使用PHP生成PDF方法详解
Jan 23 PHP
PHP树-不需要递归的实现方法
Jun 21 PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 PHP
PHP会话控制实例分析
Dec 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
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
浅谈php命令行用法
2015/02/04 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
超清晰的document对象详解
2007/02/27 Javascript
Prototype Function对象 学习
2009/07/12 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
2019/06/17 Python
详解python和matlab的优势与区别
2019/06/28 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
python Paramiko使用示例
2020/09/21 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
检查接待方案
2014/02/27 职场文书
《金孔雀轻轻跳》教学反思
2014/04/20 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
微信搭讪开场白
2015/05/28 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书