IMG-LOGO
공지사항 :

PHP 디렉터리 제어

lmkfox - 2025-08-04 05:26:02 28 Views 0 Comment

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()


댓글