如今至少有两种选择。
在删除文件夹之前,请删除其所有文件和文件夹(这意味着递归!)。这是一个例子:
public static function deleteDir($dirPath) {if (! is_dir($dirPath)) { throw new InvalidArgumentException("$dirPath must be a directory");}if (substr($dirPath, strlen($dirPath) - 1, 1) != '/') { $dirPath .= '/';}$files = glob($dirPath . '*', GLOB_MARK);foreach ($files as $file) { if (is_dir($file)) { self::deleteDir($file); } else { unlink($file); }}rmdir($dirPath);}
如果您使用的是5.2+,则可以使用RecursiveIterator来实现,而无需自己实现递归:
$dir = 'samples' . DIRECTORY_SEPARATOR . 'sampledirtree';$it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);$files = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST);foreach($files as $file) {if ($file->isDir()){ rmdir($file->getRealPath());} else { unlink($file->getRealPath());}}rmdir($dir);


