1 2 3 4 5 6 7 8 9 10 11 | 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 );
}
}
|
Salin selepas log masuk
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()。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?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 );
}
}
?>
|
Salin selepas log masuk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?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:
|
Salin selepas log masuk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php
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 );
}
?>
|
Salin selepas log masuk
更多rrmdir php中递归删除目录及目录下的文件相关文章请关注PHP中文网!