如何使用PHP删除包含内容的文件夹

Fer*_*ero 28 php filesystems directory file

我需要使用PHP删除包含内容的文件夹.rmdir()unlink()删除空文件夹,但无法删除包含内容的文件夹.

Ali*_*xel 82

此功能允许您删除任何文件夹(只要它是可写的)及其文件和子目录.

function Delete($path)
{
    if (is_dir($path) === true)
    {
        $files = array_diff(scandir($path), array('.', '..'));

        foreach ($files as $file)
        {
            Delete(realpath($path) . '/' . $file);
        }

        return rmdir($path);
    }

    else if (is_file($path) === true)
    {
        return unlink($path);
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

或者没有递归使用RecursiveDirectoryIterator:

function Delete($path)
{
    if (is_dir($path) === true)
    {
        $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::CHILD_FIRST);

        foreach ($files as $file)
        {
            if (in_array($file->getBasename(), array('.', '..')) !== true)
            {
                if ($file->isDir() === true)
                {
                    rmdir($file->getPathName());
                }

                else if (($file->isFile() === true) || ($file->isLink() === true))
                {
                    unlink($file->getPathname());
                }
            }
        }

        return rmdir($path);
    }

    else if ((is_file($path) === true) || (is_link($path) === true))
    {
        return unlink($path);
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

  • 伟大的方法,伙计.我使用的是更简单的命令:<?php system("rm -r RESOURCE_PATH"); 但是,不幸的是有些服务器不允许系统命令,所以你的(我选择第一个)是一个非常好的简单替换.谢了,兄弟. (2认同)
  • 这也适用于相对路径吗?所以假设完整路径是“/var/www/html/folder_and_files_to_delete/”,删除脚本放在“/var/www/html/delete_folders_and_files.php”中。我可以将“folder_and_files_to_delete”作为路径吗? (2认同)