隐式目录删除不起作用


Reclusive Directory Remove not working?

我正试图用这个脚本删除一个目录及其所有内容。。。

<?php
$app = $_POST['app'];
if (isset($_POST['app'])) {
    $dir = "../apps/" . $app . "/";
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);
    }
}
}
?>

$post运行良好,脚本没有返回任何错误,只是没有删除目录。这可能与文件夹权限有关吗?我需要激活任何PHP扩展吗?

--编辑--链接的副本没有达到我想要的效果,我不知道如何更改它的代码。我正在删除客户端的一个目录,所以我不能使用__DIR__,因为它保持了像这样的路径/test/app,我需要它们像这样''test''app。此外,代码不会删除文件夹,但会删除所有内容。我认为这与FilesystemIterator::SKIP_DOTS线路有关。我也需要删除文件夹的代码,因为当用户再次安装应用程序时,由于文件夹重复,它将无法工作。

工作代码:

<?php
$app = $_POST['app'];
if (isset($_POST['app'])) {
$dir ="../apps/" . $app;
$di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
$ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
foreach ( $ri as $file ) {
    $file->isDir() ?  rmdir($file) : unlink($file);
}
rmdir($dir);
}
?>

Gordon给我发的链接帮助我找到了答案。

这是我的新工作代码。

<?php
$app = $_POST['app'];
if (isset($_POST['app'])) {
$dir ="../apps/" . $app;
$di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
$ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
foreach ( $ri as $file ) {
    $file->isDir() ?  rmdir($file) : unlink($file);
}
rmdir($dir);
}
?>