Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- TiL
- 옵티머스 g
- 우분투 20.04
- Laravel
- 제주도
- Ubuntu 20.04
- 라즈비안
- 20.04
- 라즈베리파이
- 라라벨
- Raspberry Pi
- 우분투
- 프레임워크
- MySQL
- C
- Selenium
- 옵지
- 코드이그나이터
- ubuntu
- 회고
- upbit
- php
- 옵티머스g
- 셀레니움
- 옵G
- FMS
- 업비트
- 맥
- codeigniter
- 맛집
Archives
- Today
- Total
평범한 이야기들
[PHP] 디렉토리 내용 삭제 및 디렉토리 삭제 본문
728x90
1. rmdir()
php에서 기본적으로 제공해 주는 rmdir() 함수의 정의는 다음과 같다.
rmdir ( string $dirname [, resource $context ] ) : bool
기본적으로 디렉토리를 삭제를 해준다. 하지만 해당 디렉토리 안에 내용이 존재하게 되면 false 리턴하게 된다.
따라서 추가적인 함수를 만들어서 사용해야 한다.
2. 디렉토리 내용 삭제
rmdir() 함수의 부족한 부분을 채워주는 rmdir_all() 함수의 소스이다.
<?php
$delete_path = "/home/sari/images/100/10";
rmdir_all($delete_path);
function rmdir_all($delete_path) {
$dirs = dir($delete_path);
while(false !== ($entry = $dirs->read())) {
// 디렉토리의 내용을 하나씩 읽는다.
if(($entry != '.') && ($entry != '..')) {
// 디렉토리의 내용중 현재폴더, 상위폴더가 아니면 (즉 파일 및 디렉토리)
if(is_dir($delete_path.'/'.$entry)) {
//디렉토리이면 재귀호출로 다시 삭제 시작.
rmdir_all($delete_path.'/'.$entry);
} else {
//해당 파일 삭제
@unlink($delete_path.'/'.$entry);
}
}
}
$dirs->close();
// 최종 디렉토리 삭제
@rmdir($delete_path);
}
주의사항은 삭제하고자 하는 디렉토리의 모든 내용을 지우기 때문에
$delete_path의 경로가 정상적인 경로인지 검증하는 로직을 추가로 해주어야 좀 더 안전하게 사용할 수 있다.
728x90
Comments