2009-09-01 114 views
2

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

该文件夹是在解压压缩文件后生成的,但我似乎无法删除它。

is_dir功能上的文件返回false,使得递归删除脚本失败(因为内部归档文件是“临时”文件),该目录是不是空的。

我在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); 
} 
?> 

回答

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); 
} 
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); 
} 
+0

使用MAC 10.5.8。 服务器(我正在删除这些文件)使用的是Ubuntu linux – brendo 2009-09-02 02:11:33

+0

您是否从shell中解压缩文件?还是用PHP?该文件夹的权限是什么?即:'ls -l' – bucabay 2009-09-02 06:50:02

+0

您可以发布您的PHP代码,它可能是您看不到的错误。 – bucabay 2009-09-02 06:51:54