删除包含文件的目录

时间:2012-10-28 18:45:36

标签: php

  

可能重复:
  PHP: delete directory with files in it?

如果我在以下路径中有一些文件

mysite.com/install

并且我在die.php之外创建了名为“/install/”的文件,其中路径mysite.com/die.php执行后,它应删除install文件夹及其所有文件内部。

我已经向die.php添加了以下代码

<?PHP rmdir('install');?>

但它只删除/install/文件夹时为空!如果它有文件,则会在Directory not empty

中显示错误mysite.com/install

所以不知道怎么做。

2 个答案:

答案 0 :(得分:3)

如果您正在寻找纯PHP解决方案,则必须遍历所有子文件夹(请参阅上面发布的答案)。对于只能在具有GNU coreutils(任何主要Linux发行版)的平台上运行的更快的approch,请使用:

system('rm -rf '.$dir);

建议:这可能不安全(可能管道命令) - 请务必清理您的输入。

答案 1 :(得分:1)

这应该有效

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

我在php网站上找到了它。这似乎是一个普遍的问题。