代码之家  ›  专栏  ›  技术社区  ›  Chris B

PHP:删除文件夹(包括其内容)的最简单方法

  •  32
  • Chris B  · 技术社区  · 15 年前

    这个 rmdir() 如果文件夹中包含任何文件,则函数将失败。我可以使用如下内容循环浏览目录中的所有文件:

    foreach (scandir($dir) as $item) {
        if ($item == '.' || $item == '..') continue;
        unlink($dir.DIRECTORY_SEPARATOR.$item);
    }
    rmdir($dir);
    

    有没有办法一次把它全部删除?

    7 回复  |  直到 10 年前
        1
  •  62
  •   Pragnesh Chauhan    11 年前

    rrmdir() --递归删除目录:

    function rrmdir($dir) { 
      foreach(glob($dir . '/*') as $file) { 
        if(is_dir($file)) rrmdir($file); else unlink($file); 
      } rmdir($dir); 
    }
    
        2
  •  47
  •   chaos    13 年前

    嗯,总是有

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

    如果有的话。

        3
  •  3
  •   GIPSSTAR    9 年前
    function delete_files($dir) {
      if (is_dir($dir)) {
        $objects = scandir($dir);
        foreach ($objects as $object) {
          if ($object != "." && $object != "..") {
            if (filetype($dir."/".$object) == "dir") 
               delete_files($dir."/".$object); 
            else unlink   ($dir."/".$object);
          }
        }
        reset($objects);
        rmdir($dir);
      }
     }
    
        4
  •  2
  •   Kevin Boyd    15 年前

    this 来源;

    使用以下命令:

        chdir ($file_system_path);
        exec ("del *.* /s /q");
    

    您可以使用其他DEL语法或任何其他shell util。 您可能必须允许服务与桌面交互,因为这是我当前的设置,我不会更改它来测试这一点。

    否则你可以找到另一种方法 here.

        5
  •  1
  •   Ravinder Singh    11 年前

    试试这个:

    exec('rm -rf '.$user_dir);
    
        6
  •  1
  •   vinsa    9 年前

    此功能用于删除目录以及所有子目录和文件:

    function DelDir($target) {
        if(is_dir($target)) {
            $files = glob( $target . '*', GLOB_MARK ); //GLOB_MARK adds a slash to directories returned
    
            foreach( $files as $file )
            {
                DelDir( $file );      
            }
    
            rmdir( $target );
        } elseif(is_file($target)) {
            unlink( $target );  
        }
    }
    
        7
  •  0
  •   AMIB    9 年前

    lprent在php注释中提供了一个安全且良好的函数

    public static function delTree($dir) { 
       $files = array_diff(scandir($dir), array('.','..')); 
        foreach ($files as $file) { 
          (is_dir("$dir/$file") && !is_link($dir)) ? delTree("$dir/$file") : unlink("$dir/$file"); 
        } 
        return rmdir($dir); 
      }