[PHP]Uncaught exception Directory not empty

Read More

ちょっとハマったのでメモ。


Uncaught exception  Directory not empty

ってのは
空じゃないディレクトリをrmdir()で消そうとしたときに出たエラー。


この解決策はディレクトリを消す前に、それに内包されているディレクトリ・ファイルを先に削除すればよい。
…はずだったんだけど。


ファイルとか先に消してるはずなのにエラーが出る!

よくよく調べてみると原因がわかった。




--
ディレクトリの中に一時的に作成した別のディレクトリがあるんだけど、そいつをdir()で開いてて、使い終わったあとにそのディレクトリオブジェクト閉じてなかった。


ざっくり書くとこんな感じの処理↓
<?php
$objDir = dir($local_img_dir_path);
  while($fl=$objDir->read()) {
    if($fl!='.' and $fl!='..') {
      $local_img_file_path = $local_img_dir_path. '/'. $fl;
      $remote_img_file_path = $remote_image_dir_path'. '/'. $fl;
      $chk = ftp_output($conn, $local_img_file_path, $remote_img_file_path);
    }// end if
  }// end while
$objDir->close();
?>

↑この最後の行の $objDir->close() を書き忘れてた。


そのあと $local_img_dir_path のもう一つ上位のディレクトリを削除しようとしてエラーが出てたってわけ。




そりゃ消せないわ。