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 使ったほうが早いですが・・・
どなたか組み込み関数で再帰的に削除できる方法をご存知でしたら教えてください。
最終更新 2010-05-12

この記事へのコメント
まだコメントは投稿されていません。