无法使用 rmdir 功能删除文件夹

Cannot delete folder using with rmdir function

我在删除文件夹路径中的选定文件夹时遇到问题。我使用的是XAMPP,并不会删除选择的文件夹路径是C:\xampp\htdocs\delete_folder\test\abc,但是下面的代码无法删除文件夹。我认为是因为 abc 文件夹中有另一个文件夹。

我指的是 link 来执行 rmdir 功能:https://www.php.net/manual/zh/function.rmdir.php

下面是index.php中的示例代码,这意味着每次我刷新页面时,如果可以删除所选文件夹:

<?php
$dir ="test/abc";
function deleteDirectory($dir) {
    if (!file_exists($dir)) {
        return true;
    }

    if (!is_dir($dir)) {
        return unlink($dir);
    }

    foreach (scandir($dir) as $item) {
        if ($item == '.' || $item == '..') {
            continue;
        }

        if (!deleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) {
            return false;
        }

    }

    return rmdir($dir);
}
?>

希望有人能指导我如何解决这个问题。谢谢

Windows shell/cmd 有一个命令 rmdir 可以删除包含内容的文件夹。使用

exec('rmdir FOLDERNAME /s /q');

在Windows上打开一个shell/cmd并输入rmdir /?,你会看到参数的解释:

/s 删除包含内容的文件夹

/q 不会要求确认。

慎用!

你的代码是这样写的,你期待的是:

$dir ="test/abc";

将名称 test/abc 传递给您的函数 开头为:

function deleteDirectory($dir) {

并执行函数?这不是函数的工作方式。

$dir是一个函数参数,与 您在它之前定义的 $dir 。您的代码应该更像:

<?php

function deleteDirectory($dir) {
    if (!file_exists($dir)) {
        return true;
    }

    if (!is_dir($dir)) {
        return unlink($dir);
    }

    foreach (scandir($dir) as $item) {
        if ($item == '.' || $item == '..') {
            continue;
        }

        if (!deleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) {
            return false;
        }

    }

    return rmdir($dir);
}

deleteDirectory("test/abc");

?>

看到了吗?该函数已定义,然后它会使用所需的参数进行调用。 (我希望我的 php 语法在这里是正确的,我很少使用 php。但总体思路在所有语言中都是相同的)