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

メモ。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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; 
    
}