删除目录和文件的问题

时间:2015-03-01 13:39:48

标签: php delete-file rmdir delete-directory

我试着,一旦点击一个按钮,删除一个包含任何文件和其他目录的目录,但是我遇到了问题。

我收到的错误是 -

  

PHP致命错误:未捕获异常'UnexpectedValueException'   信息   “RecursiveDirectoryIterator :: __构建体(http://...@alink.co.uk/):   未能打开目录:未在

中实现

以下是与此相关的代码部分 -

$dir = 'http://www.thisismylink.co.uk/userfolder/' . $row['email'] . "/";
    $it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
    $files = new RecursiveIteratorIterator($it,
                RecursiveIteratorIterator::CHILD_FIRST);
    foreach($files as $file) {
        if ($file->isDir()){
            rmdir($file->getRealPath());
        } else {
            unlink($file->getRealPath());
        }
    }
    rmdir($dir);

现在结构是 -

用户电子邮件($ dir)

  • 图片
    • picture.png
  • 视频
    • video.mp4

我想要做的是删除“用户电子邮件”目录中的所有内容以及“用户目录”本身以及

2 个答案:

答案 0 :(得分:1)

好像你正在使用完整的URL作为顶级目录。不应该是:

$dir = 'userfolder/' . $row['email'] . "/"; //Relative to your script
$it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
$files = new RecursiveIteratorIterator($it,
            RecursiveIteratorIterator::CHILD_FIRST);
foreach($files as $file) {
    if ($file->isDir()){
        rmdir($file->getRealPath());
    } else {
        unlink($file->getRealPath());
    }
}
rmdir($dir);

答案 1 :(得分:0)

真的是处理问题的一种相当危险的方式;我不是想绕开你的实际问题,但请考虑保持一个数据库充满“目录”以及他们与之关联的人。删除用户时,请将db中的标志设置为“toBeRemoved”或类似内容。

然后每隔一段时间,就有一个cron / schedule任务来查询要删除的目录列表,然后删除数据库条目/标记它更新。

问题在于,无论您认为它有多安全,都可以利用脚本,或者通过基于Web /用户的输入产生不可预测的结果。

如果这些错误是基于权限的,则使用上述心态将允许在“root”用户级别完成此操作,而不必担心在您的代码处被系统文件删除被错误用户损坏(或精心设计的用户遇到错误的事件组合。)