피카부 RSS 태그 관리 글쓰기 방명록 다시 시작하는 개발 블로그
2016-08-25 16:15:02

php의 함수 rmdir은 directory를 삭제해주는 함수이다. 해당 directory에 파일이 남아 있다면 에러가 나면서 삭제가 되지 않는다. 이럴 때 해당 디렉토리 안의 파일들도 같이 삭제를 해주는 처리가 필요하다.

 

아래 함수는 재귀적 로직으로 내부 디렉토리의 디렉토리 안의 파일들까지 삭제를 하며 최종적으로 지정한 디렉토리까지 말끔히 지워준다.

 

function rmdir_all($dir) {
  if (!file_exists($dir)) {
    return;
  }
  $dhandle = opendir($dir);
  if ($dhandle) {
    while (false !== ($fname = readdir($dhandle))) {
       if (is_dir( "{$dir}/{$fname}" )) {
          if (($fname != '.') && ($fname != '..')) {
             $this->rmdir_all("$dir/$fname");
          }
       } else {
          unlink("{$dir}/{$fname}");
       }
    }
    closedir($dhandle);
  }
  rmdir($dir);
}

 

 

위 함수를 추가하고 rmdir대신 rmdir_all에 디렉토리 경로를 넣어주면 된다.