rrmdir php中递归删除目录及目录下的文件

2015-01-24信息快讯网

php自带的rmdir,只能删除空目录,这个rrmdir就可以递归删除目录及目录下的所有文件,不过使用起来要小心哦,不要把所有文件都删了

 
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数组相加 array(“a”)+array(“b”)结果还是array(“a”)
PHP输入流php://input介绍
PHP爆绝对路径方法收集整理
php中inlcude()性能对比详解
PHP中file_exists与is_file,is_dir的区别介绍
php中判断文件空目录是否有读写权限的函数代码
php一个找二层目录的小东东
php 操作数组(合并,拆分,追加,查找,删除等)
PHP删除数组中的特定元素的代码
php数组中删除元素的实现代码
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
web目录下不应该存在多余的程序(安全考虑)
php递归创建和删除文件夹的代码小结
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
php 删除一个数组中的某个值.兼容多维数组!
shopex主机报错误请求解决方案(No such file or directory)
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
php dirname(__FILE__) 获取当前文件的绝对路径
Views rows style模板重写代码
centos 5.6 升级php到5.3的方法
php中在PDO中使用事务(Transaction)
PHP 计算代码执行耗时的代码修正网上普遍错误
PHP与C#分别格式化文件大小的代码
PHP读取ACCESS数据到MYSQL的代码
php cookies中删除的一般赋值方法
PHP删除特定数组内容并且重建数组索引的方法.
PHP中删除变量时unset()和null的区别分析
PHP统计目录下的文件总数及代码行数(去除注释及空行)
PHP目录函数实现创建、读取目录教程实例
DEDE采集大师官方留后门的删除办法
php循环检测目录是否存在并创建(循环创建目录)
linux下删除7天前日志的代码(php+shell)
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
php目录操作函数之获取目录与文件的类型
PHP is_dir() 判断给定文件名是否是一个目录
php is_file()和is_dir()用于遍历目录时用法注意事项
php遍历目录viewDir函数
PHP 配置open_basedir 让各虚拟站点独立运行
PHP下用rmdir实现删除目录的三种方法小结
©2014-2024 dbsqp.com