【问题标题】:How to delete a folder with other files and folders inside with PHP [duplicate]如何使用PHP删除包含其他文件和文件夹的文件夹[重复]
【发布时间】:2011-11-24 20:36:51
【问题描述】:

可能重复:
A recursive remove directory function for PHP?

使用 PHP

我想知道删除包含文件和文件夹的文件夹的最简单方法。

【问题讨论】:

    标签: php delete-file rm rmdir


    【解决方案1】:

    PHP docs 的这个技巧非常酷:

    function rrmdir($path)
    {
      return is_file($path)?
        @unlink($path):
        array_map('rrmdir',glob($path.'/*'))==@rmdir($path)
      ;
    }
    

    它利用array_map,在结果数组上调用给定函数。它也是跨平台的。

    【讨论】:

      【解决方案2】:

      system("rm -fr $foldername");

      虽然它只适用于 unix,但很简单。

      【讨论】:

      • 我不建议这样做,但如果你必须这样做,请确保你 (a) 在调用它之前在 $foldername 上使用 escapeshellcmd,并且 (b) 小心你的路径'重新执行。为了安全起见,我会确保 $foldername 是绝对路径。
      • 谢谢你有没有一种独立于 Unix 的 shell?
      【解决方案3】:

      此递归函数已发布为comment on the rmdir() function reference page

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

      【讨论】:

        【解决方案4】:

        这是张贴在这里http://www.php.net/manual/en/function.rmdir.php

        if(!file_exists($directory) || !is_dir($directory)) { 
            return false; 
        } elseif(!is_readable($directory)) { 
            return false; 
        } else { 
            $directoryHandle = opendir($directory); 
        
            while ($contents = readdir($directoryHandle)) { 
                if($contents != '.' && $contents != '..') { 
                    $path = $directory . "/" . $contents; 
        
                    if(is_dir($path)) { 
                        deleteAll($path); 
                    } else { 
                        unlink($path); 
                    } 
                } 
            } 
        
            closedir($directoryHandle); 
        
            if($empty == false) { 
                if(!rmdir($directory)) { 
                    return false; 
                } 
            } 
        
            return true; 
        } 
        

        }

        【讨论】:

          猜你喜欢
          • 2014-02-15
          • 2013-03-20
          • 2012-07-21
          • 2011-01-15
          • 2012-07-24
          • 2010-11-22
          • 2015-09-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多