rmdir() 可刪除空目錄。若目錄非空會失敗並回傳 false。搭配 is_dir() 先判斷目錄是否存在,避免警告。
rmdir(string $directory, resource $context = null): bool
<?php
$dir = 'exampledir';
if (!is_dir($dir)) {
mkdir($dir); // 不存在則建立(示範用)
}
if (rmdir($dir)) {
echo "目錄已刪除";
} else {
echo "刪除失敗(目錄可能非空或權限不足)";
}
?>
function deleteDirectory($dir) {
if (!is_dir($dir)) return false;
$items = scandir($dir);
foreach ($items as $item) {
if ($item === '.' || $item === '..') continue;
$path = $dir . DIRECTORY_SEPARATOR . $item;
if (is_dir($path)) {
deleteDirectory($path);
} else {
unlink($path);
}
}
return rmdir($dir);
}
// 使用 FilesystemIterator + RecursiveDirectoryIterator
function deleteDirectoryModern($dir) {
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS),
RecursiveIteratorIterator::CHILD_FIRST
);
foreach ($iterator as $item) {
$item->isDir() ? rmdir($item->getPathname()) : unlink($item->getPathname());
}
rmdir($dir);
}
依專案 PHP 版本選擇適當寫法,確保目錄清理可靠。