用PHP删除__MACOSX文件夹?

时间:2009-09-01 23:59:55

标签: php directory delete-directory

有没有人有使用PHP删除__MACOSX文件夹的经验?

我解压缩档案后生成了该文件夹,但我似乎无法将其删除。

is_dir函数在文件上返回false,导致递归删除脚本失败(因为归档内部是'temp'文件),因此目录不为空。

我在PHP5中使用内置的ZipArchive类(extractTo方法)。

我正在使用的rmdir脚本是我在php.net上找到的:

<?php
// ensure $dir ends with a slash
function delTree($dir) {
    $files = glob( $dir . '*', GLOB_MARK );
    foreach( $files as $file ){
        if( substr( $file, -1 ) == '/' )
            delTree( $file );
        else
            unlink( $file );
    }
    rmdir( $dir );
}
?> 

2 个答案:

答案 0 :(得分:5)

我从http://www.php.net/rmdir找到了一个需要PHP5的函数​​的改进版本。

  • 此功能使用DIRECTORY_SEPARATOR代替/。 PHP将DIRECTORY_SEPARATOR定义为正在运行的操作系统的正确字符('/'或'\')。
  • 目录位置不需要以斜杠结尾。
  • 该函数在完成时返回truefalse
function deleteDirectory($dir) {
    if (!file_exists($dir)) return true;
    if (!is_dir($dir)) return unlink($dir);
    foreach (scandir($dir) as $item) {
        if ($item == '.' || $item == '..') continue;
        if (!deleteDirectory($dir.DIRECTORY_SEPARATOR.$item)) return false;
    }
    return rmdir($dir);
}

答案 1 :(得分:0)

您使用的是哪个操作系统和版本?


您需要更正目录和文件的路径。

// ensure $dir ends with a slash
function delTree($dir) {

    foreach( $files as $file ){
        if( substr( $file, -1 ) == '/' )
            delTree( $dir.$file );
        else
            unlink( $dir.$file );
    }
    rmdir( $dir );
}