IT
PHP 디렉터리 제어
1. 디렉터리 생성:
mkdir()
mkdir("mydir");
-
기본적으로 현재 경로에 mydir이라는 디렉터리를 생성합니다.
옵션 사용
mkdir("parent/child", 0777, true);
매개변수
설명
0777
권한 설정 (읽기/쓰기/실행 모두 허용)
true
중간 디렉터리까지 재귀적으로 생성
2. 디렉터리 삭제:
rmdir()
rmdir("mydir");
-
디렉터리가 비어 있어야 삭제됩니다.
-
내부에 파일이나 디렉터리가 있으면 삭제되지 않습니다.
재귀적으로 디렉터리 삭제 (사용자 정의 함수 예)
function deleteDir($dir) {
if (!file_exists($dir)) return;
$items = scandir($dir);
foreach ($items as $item) {
if ($item == '.' || $item == '..') continue;
$path = $dir . DIRECTORY_SEPARATOR . $item;
if (is_dir($path)) {
deleteDir($path);
} else {
unlink($path);
}
}
rmdir($dir);
}
3. 디렉터리 열기:
opendir()
$handle = opendir("mydir");
-
디렉터리 핸들을 반환합니다.
4. 디렉터리 내용 읽기:
readdir()
$handle = opendir("mydir");
while (($file = readdir($handle)) !== false) {
echo $file . "<br>";
}
closedir($handle);
-
.: 현재 디렉터리
-
..: 상위 디렉터리
-
일반 파일이나 디렉터리 이름이 나열됨
5. 디렉터리 닫기:
closedir()
closedir($handle);
-
열린 디렉터리 핸들을 닫습니다.
6. 디렉터리 목록 배열로 얻기:
scandir()
$files = scandir("mydir");
foreach ($files as $file) {
echo $file . "<br>";
}
-
반환값은 배열이며 정렬된 상태로 들어옵니다.
7. 디렉터리 존재 여부 확인:
is_dir()
if (is_dir("mydir")) {
echo "디렉터리가 존재합니다.";
}
-
존재 여부 확인 시 file_exists()보다 is_dir()이 더 명확함
8. 디렉터리 권한 설정:
chmod()
chmod("mydir", 0755);
-
Unix 계열에서만 작동
-
0755: 소유자에게는 읽기/쓰기/실행, 그룹과 다른 사용자에겐 읽기/실행 권한
9. 디렉터리 이름 변경 또는 이동:
rename()
rename("old_dir", "new_dir");
-
디렉터리 이름 변경 또는 다른 위치로 이동 가능
10. 경로 처리 관련 함수
함수
설명
basename($path)
경로에서 파일/디렉터리 이름만 반환
dirname($path)
상위 경로 반환
realpath($path)
실제 전체 경로 반환
chdir($path)
현재 작업 디렉터리 변경
getcwd()
현재 작업 디렉터리 반환
예시
echo basename("/var/www/html"); // html
echo dirname("/var/www/html"); // /var/www
echo getcwd(); // 현재 작업 디렉터리
11. 디렉터리 생성 실패 시 예외 처리
$dir = "mydir";
if (!is_dir($dir)) {
if (!mkdir($dir, 0755, true)) {
die("디렉터리 생성 실패");
}
}
12. 실용 예제: 디렉터리 내 파일 모두 출력
$path = "mydir";
if (is_dir($path)) {
$files = array_diff(scandir($path), array('.', '..'));
foreach ($files as $file) {
echo $file . "<br>";
}
}
요약
작업
함수
디렉터리 생성
mkdir()
디렉터리 삭제
rmdir(), 사용자 정의 재귀 함수
디렉터리 열기
opendir()
디렉터리 읽기
readdir(), scandir()
디렉터리 닫기
closedir()
디렉터리 존재 확인
is_dir()
디렉터리 권한 변경
chmod()
디렉터리 이름 변경/이동
rename()
현재 디렉터리 변경/확인
chdir(), getcwd()
댓글
아직 댓글이 없습니다.
로그인 후 댓글을 남길 수 있습니다.