【PHP】指定したディレクトリ下のファイル、フォルダを再帰的に削除する関数。

メモ。

下記関数に削除したいディレクトリを投げればOK。
投げたディレクトリが相対パス、またはシンボリックリンクの場合、第二引数にtrueを渡すと参照を解決してくれる。

function destroyDir($dir, $virtual = false) {  
    $ds = DIRECTORY_SEPARATOR;  
    $dir = $virtual ? realpath($dir) : $dir;  
    $dir = substr($dir, -1) == $ds ? substr($dir, 0, -1) : $dir;  
    if(is_dir($dir) && $handle = opendir($dir)) {  
        while($file = readdir($handle)) {  
            if($file == '.' || $file == '..') {  
                continue;  
            } elseif(is_dir($dir.$ds.$file)) {  
                destroyDir($dir.$ds.$file);  
            } else {  
                unlink($dir.$ds.$file);  
            }  
        }  
        closedir($handle);  
        rmdir($dir);  
        return true;  
    } else {  
        return false;  
    }  
}