[PHP-users 26835] ディレクトリ削除処理

kimura@kmtec.co.jp kimura @ kmtec.co.jp
2005年 9月 11日 (日) 04:52:18 JST


こんにちは、
自作で下記のようなディレクトリ削除プログラムを組んでいるのですが、
ファイルなどは
すべて削除されるのですが、ディレクトリは削除されません。
組み方が悪いらしく、ループから抜けることも出来ず、
うまく動いてくれません。
よろしくお願いします。

環境
OS:windows
php4.1

渡されてくる値
$_POST['item1']; = C:/www/tetete/1/
$_POST['item2']; = 1


<?php
$item1 = $_POST['item1'];
$item2 = $_POST['item2'];
$dir = $item1;
$cnt = 1; //カウント初期値
$copy_direct[] = array(); //コピー用配列

if($item2 == 1){
  //ディレクトリを削除する
  //削除するディレクトリにファイルが入っている場合、削除できないので先に削除
する

//すべてのファイルを削除するまで抜けない
 while($cnt != 0){
  //ディレクトリファイル取得
 $dh  = opendir($dir);
 $direct[] = array();
  //削除ディレクトリパス格納配列
 $cnt = 1; //カウント
 while (false !== ($filename = readdir($dh))) {
     $files[] = $filename;
  $cnt++;
 }
 closedir($dh);
    if($cnt == $teny){
  //ディレクトリ削除する
  //コピーした$copy_direct配列の最大値に取得されている最下位ディレクトリ削除
  $tep = count($copy_direct) - 1;
  rmdir($copy_direct[$tep]);

  //最後のディレクトリを削除した場合、whileから抜ける
  if($tep == 0){
   $cnt = 0;
  }
 }
 for($i=2; $i<$cnt; $i++){
 //ファイル名に「.」があればファイル、なければディレクトリ名として判断
   if(strpos($files[$i], '.') == 0 ){
   // ディレクトリパス格納
  $direct[] = $dir .'/'. $files[$i];
  print($direct);
   } else {
  //ファイル削除
  @unlink($dir .'/'. $files[$i]);
   }
    }
     //次の検索するディレクトリパスを代入
     $dir = $direct[0];
     //初期化する前に、配列のコピーをとっておく、
     $copy_direct = $direct;
     $teny = count($copy_direct) - 1;

 }
} else {
  //ファイルを削除する
  //「@」をつけることでエラーを出さなくする。
   @unlink($item1);
}
  //ページ移動
//  header("Location: bark-menu.php");
?>



PHP-users メーリングリストの案内