PHP mkdir() 함수란?
PHP의 mkdir() 함수는 서버에 새로운 디렉터리(폴더)를 생성할 때 사용하는 내장 함수입니다. 파일 업로드 시스템이나 로그 저장 폴더를 자동으로 만들어야 할 때 자주 활용됩니다.
기본 문법
mkdir(file_path, mode, recursive, context)
매개변수 설명
file_path – 생성하려는 디렉터리의 경로를 지정합니다.
mode – 디렉터리에 적용할 접근 권한을 지정합니다.
recursive – 상위 디렉터리가 없을 경우 재귀적으로 생성할지 여부를 설정합니다.
context – 파일 핸들에 적용할 컨텍스트를 지정합니다.
mode 매개변수 이해하기
mode 값은 다음 네 가지 구성 요소로 이루어집니다.
- 접두어 0 (8진수 표기)
- 소유자(owner) 권한
- 소유자가 속한 사용자 그룹(group) 권한
- 그 외 사용자(others) 권한
각 자릿수의 권한은 아래 숫자들을 더해 조합합니다.
- 1 = 실행(execute) 권한
- 2 = 쓰기(write) 권한
- 4 = 읽기(read) 권한
예를 들어 0777은 모든 사용자에게 읽기·쓰기·실행 권한을 부여하는 기본값이며, 0700은 소유자에게만 모든 권한을 부여하고 나머지 사용자의 접근을 차단합니다.
반환 값
mkdir() 함수는 디렉터리 생성에 성공하면 TRUE, 실패하면 FALSE를 반환합니다.
사용 예제
1. 기본 디렉터리 생성
다음은 기본 모드인 0777로 새 디렉터리를 생성하는 예제입니다.
<?php
mkdir("testing");
?>
위 코드를 실행하면 현재 경로에 “testing”이라는 이름의 디렉터리가 생성됩니다.
2. 권한을 지정한 디렉터리 생성
새 디렉터리를 만들면서 동시에 권한까지 설정하는 예제입니다.
<?php
mkdir("QA", 0700);
?>
위 코드는 “QA” 디렉터리를 생성하고, 소유자에게만 읽기·쓰기·실행 권한을 부여합니다.
3. 중첩 디렉터리 한 번에 생성하기
세 번째 매개변수 recursive를 true로 설정하면 상위 폴더가 없어도 전체 경로를 한 번에 생성할 수 있습니다.
<?php
mkdir("a/b/c", 0777, true);
?>
마무리 팁
실무에서는 이미 같은 이름의 디렉터리가 존재하면 오류가 발생하므로, is_dir() 또는 file_exists()로 존재 여부를 먼저 확인한 뒤 생성하는 것이 안전합니다.
<?php
if (!is_dir("testing")) {
mkdir("testing", 0777);
}
?>