函数不';我不想删除文件夹


Function doesn't want to remove folder

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

我有三个功能使它工作:

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

有什么提示吗?

尝试此操作将删除folder及其contentsubfolders

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

其中$dirfolder 的路径

也许你用一个没有权限对文件夹进行更改的用户执行程序,试着用root用户执行程序或将权限授予当前用户,祝你好运。

尝试此操作将not从php.net 中删除empty direcotires

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