Puede usar el sistema de archivos de Symfony ( código ):
// composer require symfony/filesystem
use Symfony\Component\Filesystem\Filesystem;
(new Filesystem)->remove($dir);
Sin embargo, no pude eliminar algunas estructuras de directorio complejas con este método, así que primero debes probarlo para asegurarte de que funcione correctamente.
Podría eliminar dicha estructura de directorio utilizando una implementación específica de Windows:
$dir = strtr($dir, '/', '\\');
// quotes are important, otherwise one could
// delete "foo" instead of "foo bar"
system('RMDIR /S /Q "'.$dir.'"');
Y solo por completar, aquí hay un viejo código mío:
function xrmdir($dir) {
$items = scandir($dir);
foreach ($items as $item) {
if ($item === '.' || $item === '..') {
continue;
}
$path = $dir.'/'.$item;
if (is_dir($path)) {
xrmdir($path);
} else {
unlink($path);
}
}
rmdir($dir);
}