php - 使用 php 删除所有文件、文件夹及其子文件夹

标签 php file-io directory subdirectory

<分区>

我需要一个脚本,它可以删除整个目录及其所有子文件夹、文件等。我尝试使用几个月前在互联网上找到的这个功能,但它不能完全工作。

function deleteFile($dir) {
    if(substr($dir, strlen($dir)-1, 1) != '/') { 
        $dir .= '/'; 
    }
    if($handle = opendir($dir)) { 
        while($obj = readdir($handle)) { 
            if($obj != '.' && $obj != '..') { 
                if(is_dir($dir.$obj)) { 
                    if(!deleteFile($dir.$obj)) {
                        echo $dir.$obj."<br />";
                        return false;
                    }
                }
                elseif(is_file($dir.$obj)) { 
                    if(!unlink($dir.$obj)) {
                        echo $dir.$obj."<br />";
                        return false;
                    }
                }
            }
        }
        closedir($handle); 
        if(!@rmdir($dir)) {
            echo $dir.'<br />';
            return false;
        }
        return true;
    }
    return true;
}

为了测试,我使用了 prestashop 的解压存档,我尝试删除解压存档的文件夹,但它不起作用。

/home/***/public_html/prestashop/img/p/3/
/home/***/public_html/prestashop/img/p/3
/home/***/public_html/prestashop/img/p
/home/***/public_html/prestashop/img

这些是有问题的文件夹。第一次我想 - “可能是文件的 chmod 有问题”但是当我测试所有文件 chmod 权限 755(之后是 777)时 - 结果是一样的。

最佳答案

<?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.net的代码

对我来说很好

关于php - 使用 php 删除所有文件、文件夹及其子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11613840/

相关文章:

c - 指定文件扩展名

linux - 如何使用 "ln"在 linux 上为目录创建链接?

wordpress - 在 WordPress 中管理子目录的最佳做法是什么?

php - 无法将图像从外部 url 复制到我的服务器

来自 mysql assoc 的 PHP 数组

python - 写入文件字节和字符串

macos - 如果文件存在则返回 VBA Mac Office 2011

linux - Linux 服务器的一个文件夹中应该允许多少个文件供用户上传?

php - 在 PHP MySQL 中使用 jQuery AJAX 提交表单而不重新加载

php - 如何使用JustGage的json数据动态创建jquery对象