2013-11-20 6 views
0

Все функции работают, кроме 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: удалить папку

Подсказка?

+1

Любая ошибка .....? – geedubb

+1

'emptyIt' должен вызывать себя рекурсивно, когда находит папку, если есть больше уровней вложенности. – Barmar

+0

@geedubb: Нет, нет ошибок. –

ответ

0

попробовать это удалит folder и его content (subfolders)

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

где $dir это путь folder

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