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 相关文章推荐
让你的网站首页自动选择语言转跳
Dec 06 PHP
php公用函数列表[正则]
Feb 22 PHP
php面向对象全攻略 (八)重载新的方法
Sep 30 PHP
有关php运算符的知识大全
Nov 03 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
Sep 06 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
Feb 12 PHP
php计算title标题相似比的方法
Jul 29 PHP
php一个文件搞定微信jssdk配置
Dec 12 PHP
php实现留言板功能
Mar 05 PHP
php编程实现简单的网页版计算器功能示例
Apr 26 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 09 PHP
PHP中cookie知识点学习
May 06 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与SQL注入攻击[三]
2007/04/17 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
Javascript 键盘keyCode键码值表
2009/12/24 Javascript
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
JavaScript?Apple设备检测示例代码
2013/11/15 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
Python操作Excel之xlsx文件
2017/03/24 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
PYTHON如何读取和写入EXCEL里面的数据
2019/10/28 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
美国真皮手袋品牌:GiGi New York
2017/03/10 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
销售工作人员的自我评价分享
2013/11/10 职场文书
一封普通求职者的求职信
2013/11/20 职场文书
求职推荐信范文
2013/12/01 职场文书
建筑安全标语
2014/06/07 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL