功能不想删除文件夹

时间:2013-11-20 20:30:23

标签: php function class rmdir

除了removeIt one(空白页)之外,所有功能都有效。这是我的代码:

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:删除文件夹
  4. 任何提示?

3 个答案:

答案 0 :(得分:0)

尝试此操作会移除folder及其contentsubfolders

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

其中$dirfolder

的路径

答案 1 :(得分:0)

也许您使用没有权限对文件夹进行更改的用户执行程序,尝试使用root执行该程序或授予当前用户权限,祝您好运。

答案 2 :(得分:0)

尝试此操作not删除empty direcotires from 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);
}
}