【问题标题】:How to debug a recursive directory search script in PHP? [closed]如何在 PHP 中调试递归目录搜索脚本? [关闭]
【发布时间】:2015-09-07 06:10:31
【问题描述】:

我正在尝试删除一个包含所有内容的文件夹。但这似乎不起作用。我尝试了很多不同的方法。谁能告诉我我做错了什么?

<?php 
$path = $_POST['Name'];
session_start();

$dir = __DIR__ . "$path";
$di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
$ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
foreach ( $ri as $file ) {
    $file->isDir() ?  rmdir($file) : unlink($file);
}

 echo "<h1 style='font:normal;'>The Account $path Was deleted</h1>";


?>

【问题讨论】:

  • 为什么不在删除之前echo $file; 看看您要删除的内容?我似乎记得这些迭代器返回一个对象数组,而不是字符串数组(它们可能有一个神奇的 toString 值,但请查看文档以确认)。
  • 另外,检查你的删除命令的返回值——它们应该返回一个成功的布尔值。我认为如果删除失败,您的代码应该停止并报告错误。

标签: php recursion delete-file directory


【解决方案1】:

这里有一个解决方案,你可以使用glob 来查找所有匹配某个模式的文件

function RemoveDirectory($direct)
{
    foreach(glob("{$direct}/*") as $file)
    {
        if(is_dir($file)) { 
            RemoveDirectory($file);
        } else {
            unlink($file);
        }
    }
    rmdir($direct);
}

【讨论】:

  • 不会为我删除任何内容 :(
  • 您能否显示包含文件的文件夹,以便我可以尝试重复操作。
  • 文件目录如下 /htdocs/Admin/(foldername)
  • 我用RemoveDirectory("C:\wamp\htdocs\Admin\Chris"); 的路径试了一下,它成功了,你确定它是正确的文件夹并且你使用的是绝对路径吗?
  • 对我仍然不起作用。 php 文件位于 Admin 文件夹中。路径文件夹位于我使用的管理文件夹 (../) 之前。 RemoveDirectory("../$path")
猜你喜欢
  • 2013-06-17
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 2022-01-01
  • 2016-09-06
相关资源
最近更新 更多