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에 디렉토리 경로를 넣어주면 된다.
'Dev > PHP' 카테고리의 다른 글
Linux 리눅스 PHP 버전 확인 및 업그레이드 방법 (0) | 2021.02.21 |
---|---|
[PHP] error_log 함수 사용시 한글 깨짐 문자가 제대로 보이지 않는 문제 해결 (0) | 2018.04.11 |
[PHP] 문자열에서 글자수를 기준으로 자르기 (영어 한글) (0) | 2018.03.27 |
[PHP] 배열 삭제 방법 array_splice array_values array_diff unset (0) | 2017.06.22 |
[PHP] Array 배열 요소 추가 삭제 값 구하기 합치기 결합하기 다차원 사용 방법 정리 (1) | 2017.06.14 |
PHP Fatal error: Cannot redeclare 에러 해결 방법 (0) | 2016.07.26 |
CentOS 7에 yum으로 PHP 5.6을 설치하는 방법 (0) | 2016.07.18 |
php에서 간단히 mail 함수로 메일 보내기 (1) | 2014.03.13 |
PHP의 프레임워크의 역사와 현재 (CakePHP, Zend Framework, symfony, Mojavi 등) (0) | 2011.07.04 |
PHP isset, empty, is_null의 상관 관계와 정보 요약 (0) | 2010.12.22 |