WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

PHP でディレクトリを再帰的に削除する

      2012/12/12

rmdir 関数でのディレクトリ削除

PHP の組み込み関数でディレクトリを削除する rmdir という関数がありますが、この関数はディレクトリの中身が空じゃないと削除を実行できません。

dirnameで指定されたディレクトリを 削除しようと試みます。ディレクトリは空でなくてはならず、また 適切なパーミッションが設定されていなければなりません。

再帰的にディレクトリを削除できるユーザ定義関数の作成

そこで、以下のようなユーザ定義関数を作成し、再帰的に削除する処理を行いました。

test4qform.php
function rm_rf ($dir) {
    if (!is_dir($dir)) {
        return false;
    } else {
        $filelist = scandir($dir);
        foreach ($filelist as $filename) {
            if ($filename == '.' || $filename == '..') {
                continue;
            }
            if (is_dir("{$dir}/{$filename}")) {
                rm_rf("{$dir}/{$filename}");
            } else {
                unlink("{$dir}/{$filename}");
            }
        }
    }
    rmdir($dir);
    return true;
}

UNIX コマンドの rm 使ったほうが早いですが・・・
どなたか組み込み関数で再帰的に削除できる方法をご存知でしたら教えてください。

 - PHP , ,