2013-11-20 62 views
0

除removeIt之外的所有功能都有效(空白页)。这里是我的代码波纹管:功能不想删除文件夹

class Dir { 
    public function emptyIt($path) { 
     if ($handle = opendir($path)) { 
      while (false !== ($file = readdir($handle))) { 
       if ($file != "." && $file != "..") { 
        if(is_file($path."/".$file)) { 
         unlink($path."/".$file); 
        } else { 
         if($handle2 = opendir($path."/".$file)) { 
          while (false !== ($file2 = readdir($handle2))) { 
           if ($file2 != "." && $file2 != "..") { 
            unlink($path."/".$file."/".$file2); 
           } 
          } 
         } 
         rmdir($path."/".$file); 
        } 
       } 
      } 
     } 
     return true; 
    } 

    function isEmpty($path) { 
     $handle=opendir($path); 
     $i=0; 
     while (false !== ($file = readdir($handle))) { 
      $i++; 
     } 
     closedir($handle); 
     if($i>=2) { 
      return false; 
     } else { 
      return true; 
     } 
    } 

    public function removeIt($path) { 
     if (emptyIt($path)) { 
      if (rmdir($path)) { 
       return true; 
      } else { 
       return false; 
      } 
     } 
    } 
} 

我有3个功能,使其工作:

  1. isEmpty:验证该文件夹为空
  2. emptyIt:空文件夹和子文件夹
  3. removeIt:删除文件夹

任何提示?

+1

任何错误.....? – geedubb

+1

'emptyIt'应当在找到文件夹时递归调用自身,以防嵌套级别更高。 – Barmar

+0

@geedubb:不,没有错误。 –

回答

0

尝试这将删除folder及其contentsubfolders

system('/bin/rm -rf ' . escapeshellarg($dir)); 

其中$dirfolder

+0

它就像一个魅力!谢谢 ! –

0

路径也许你有一个用户执行程序,不具备权限对文件夹进行更改,尝试使用root执行它或给当前用户授予权限,祝你好运。

0

尝试,这将not删除emptydirecotiresfrom php.net

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