2013-10-27 2 views
0

Я использую PHP в другом, чтобы рекурсивно удалить каталог. При вызове этой функции:PHP Вызов функции внутри себя кирпича

function deleteDir($dirPath) { 

     $files = glob($dirPath . '*', GLOB_MARK); 
     foreach ($files as $file) { 
      if (is_dir($file)) { 
       deleteDir($file); 
      } else { 
       unlink($file); 
      } 
     } 
     rmdir($dirPath); 
} 

Используя эту строку:

deleteDir("dir_to_be_deleted_recursively/"); 

Он идет здесь не так:

deleteDir($file); 

(Когда функция обнаруживает каталог в каталоге, который он пытается delete, он вызывает функцию снова, но для этого каталога.)

Thi s директория я тестирую его:

dir_to_be_deleted_recursively/ 
    dir1/ 
     subdir1/ 
     file1.txt 
     subdir2/ 
     file2.txt 
     subdir3/ 
     file3.txt 

Примечание: я не получаю сообщение об ошибке, просто пустую страницу.

+0

Убедитесь, что вы включили отчеты об ошибках. Добавьте 'ini_set ('display_errors', 1); error_reporting (E_ALL); 'на самый верх вашего скрипта и повторите попытку. –

+0

Спасибо, теперь я получаю: 'Предупреждение: неверный аргумент, предоставленный foreach()' и много 'Warning: directory not empty' Предупреждения – Laurent

ответ

0

Я уже нашел решение!

Просто используя этот кусок кода работает отлично:

foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dirPath, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST) as $path) { 
    $path->isFile() ? unlink($path->getPathname()) : rmdir($path->getPathname()); 
} 
rmdir($dirPath); 

Источник: A recursive remove directory function for PHP?

Смежные вопросы