2013-10-27 55 views
0

我在oder中使用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); 

(当功能检测到它正试图在目录中的目录删除,它再次调用该函数,但为该目录)

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?