人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのrmdirを使用して、ディレクトリを削除しようとしたら、Directory not emptyと表示されます。どうも、中身にファイルが存在しているために、起こるもののようです。
強制的にディレクトリを削除する方法はありませんか?

●質問者: makocan
●カテゴリ:インターネット ウェブ制作
✍キーワード:EMPTY PHP ディレクトリ ファイル 存在
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● くまっぷす
●19ポイント

http://jp.php.net/rmdir

PHPの標準の関数を使うだけでは無理みたいです。

このページの下の方に出ているソースをためしてみてください。

function removeDir($path)

{

$path.="*";

foreach(glob($path) as $file)

{

unlink($file);

}

}

}

?>

など。

あと試してないのですが、UNIX系ならsystem()関数を使ってそこでrm -rf パス名 を実行させていけると思います。


2 ● ito-yu
●19ポイント

http://jp.php.net/rmdir

空じゃないと消せないのは仕様なので、自分で中のファイル/ディレクトリを消してやる必要があります。

上記ページのUser Contributed Notesに、使える関数がありますよ。

いらない行を消して転載します…

function remove_directory($dir) {

if ($handle = opendir("$dir")) {

while (false !== ($item = readdir($handle))) {

if ($item != "." && $item != "..") {

if (is_dir("$dir/$item")) {

remove_directory("$dir/$item");

} else {

unlink("$dir/$item");

}

}

}

closedir($handle);

rmdir($dir);

}

}


3 ● technolize
●18ポイント

環境にもよりますが、UNIX (Windows) のコマンドを利用するのが直感的で簡単です (僕にとっては)。

<?php system("rm -rf {$dir}"); ?>


また、マニュアルの User Contributed Notes にもこの質問内容にあう解決方法がいくつか紹介されています。 PHP は公式のマニュアルを見れば大抵解決できますよ。

http://jp2.php.net/manual/ja/function.rmdir.php


4 ● fonya3
●18ポイント

phpのマニュアルにサンプルがあります。

<?php

function remove_directory($dir) {
 if ($handle = opendir("$dir")) {
 while (false !== ($item = readdir($handle))) {
 if ($item != "." && $item != "..") {
 if (is_dir("$dir/$item")) {
 remove_directory("$dir/$item");
 } else {
 unlink("$dir/$item");
 echo " removing $dir/$item<br>\n";
 }
 }
 }
 closedir($handle);
 rmdir($dir);
 echo "removing $dir<br>\n";
 }
}

remove_directory("/path/to/dir");

?> 

http://jp.php.net/manual/ja/function.rmdir.php


5 ● tadashi0805
●18ポイント

Linux等、Unix上で動いているのなら、rmdir()の代わりにsystem()を使って、

system("/bin/rm -rf 削除ディレクトリ名");

とすることで、ディレクトリ中にファイルが入っていても、中のファイルを全部消してからrmdir()したのと同じになります。

system()経由でrmコマンドを使いたくない場合は、ディレクトリ中のファイルをopendir()、readdir()を使って自前で調べ、一つ一つunlink()で消すことになります。

◎質問者からの返答

ここに皆様へのご返答を書きたいと存じます。

皆様ありがとうございました!

なるほど。どちらにせよ、特殊な処理が必要なのですね。

試して見たいと思います!


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ