파일시스템 헬퍼
파일시스템 헬퍼 파일에는 파일 및 디렉토리 작업을 지원하는 함수들이 포함되어 있습니다.
헬퍼 로드
이 헬퍼는 다음 코드를 사용하여 로드합니다:
<?php
helper('filesystem');
사용 가능한 함수
다음 함수들을 사용할 수 있습니다:
- directory_map($sourceDir[, $directoryDepth = 0[, $hidden = false]])
- 매개변수:
$sourceDir (
string) – 소스 디렉토리 경로$directoryDepth (
int) – 탐색할 디렉토리 깊이 (0= 완전 재귀적,1= 현재 디렉토리만, 등)$hidden (
bool) – 숨김 경로 포함 여부
- 반환:
파일 배열
- 반환 형식:
array
예시:
<?php $map = directory_map('./mydirectory/');
참고
경로는 거의 항상 메인 index.php 파일을 기준으로 한 상대 경로입니다.
디렉토리 내의 하위 폴더도 함께 매핑됩니다. 재귀 깊이를 조절하려면 두 번째 매개변수(정수)를 사용하세요. 깊이를
1로 설정하면 최상위 디렉토리만 매핑합니다:<?php $map = directory_map('./mydirectory/', 1);
기본적으로 숨김 파일은 반환 배열에 포함되지 않으며 숨김 디렉토리는 건너뜁니다. 이 동작을 변경하려면 세 번째 매개변수를
true(불리언)로 설정하세요:<?php $map = directory_map('./mydirectory/', 0, true);
각 폴더 이름은 배열 인덱스가 되며 포함된 파일은 숫자 인덱스로 처리됩니다. 일반적인 배열의 예는 다음과 같습니다:
Array ( [libraries] => Array ( [0] => benchmark.html [1] => config.html ["database/"] => Array ( [0] => query_builder.html [1] => binds.html [2] => configuration.html [3] => connecting.html [4] => examples.html [5] => fields.html [6] => index.html [7] => queries.html ) [2] => email.html [3] => file_uploading.html [4] => image_lib.html [5] => input.html [6] => language.html [7] => loader.html [8] => pagination.html [9] => uri.html ) )
결과가 없으면 빈 배열을 반환합니다.
- directory_mirror($original, $target[, $overwrite = true])
- 매개변수:
$original (
string) – 원본 소스 디렉토리$target (
string) – 대상 디렉토리$overwrite (
bool) – 충돌 시 개별 파일을 덮어쓸지 여부
원본 디렉토리의 파일과 디렉토리를 대상 디렉토리로 재귀적으로 복사합니다. 즉, 내용을 “미러링”합니다.
예시:
<?php try { directory_mirror($uploadedImages, FCPATH . 'images/'); } catch (\Throwable $e) { echo 'Failed to export uploads!'; }
세 번째 매개변수로 덮어쓰기 동작을 선택적으로 변경할 수 있습니다.
- write_file($path, $data[, $mode = 'wb'])
- 매개변수:
$path (
string) – 파일 경로$data (
string) – 파일에 쓸 데이터$mode (
string) –fopen()모드
- 반환:
쓰기 성공 시
true, 오류 발생 시false- 반환 형식:
bool
경로에 지정된 파일에 데이터를 씁니다. 파일이 존재하지 않으면 함수가 파일을 생성합니다.
예시:
<?php $data = 'Some file data'; if (! write_file('./path/to/file.php', $data)) { echo 'Unable to write the file'; } else { echo 'File written!'; }
세 번째 매개변수로 쓰기 모드를 선택적으로 설정할 수 있습니다:
<?php write_file('./path/to/file.php', $data, 'r+');
기본 모드는
'wb'입니다. 모드 옵션은 PHP 매뉴얼의 fopen()을 참고하세요.참고
이 함수가 파일에 데이터를 쓰려면 파일 권한이 쓰기 가능하도록 설정되어 있어야 합니다. 파일이 아직 존재하지 않는 경우 파일이 위치할 디렉토리가 쓰기 가능해야 합니다.
참고
경로는 컨트롤러나 뷰 파일이 아닌 메인 사이트 index.php 파일을 기준으로 한 상대 경로입니다. CodeIgniter는 프론트 컨트롤러를 사용하므로 경로는 항상 메인 사이트 인덱스를 기준으로 합니다.
참고
이 함수는 파일에 쓰는 동안 파일에 대한 배타적 잠금을 획득합니다.
- delete_files($path[, $delDir = false[, $htdocs = false[, $hidden = false]]])
- 매개변수:
$path (
string) – 디렉토리 경로$delDir (
bool) – 디렉토리도 함께 삭제할지 여부$htdocs (
bool) – .htaccess 및 인덱스 페이지 파일 삭제를 건너뛸지 여부$hidden (
bool) – 숨김 파일(점으로 시작하는 파일)도 함께 삭제할지 여부
- 반환:
성공 시
true, 오류 발생 시false- 반환 형식:
bool
지정된 경로에 포함된 모든 파일을 삭제합니다.
예시:
<?php delete_files('./path/to/directory/');
두 번째 매개변수를
true로 설정하면 지정된 루트 경로 내의 모든 디렉토리도 함께 삭제됩니다.예시:
<?php delete_files('./path/to/directory/', true);
참고
파일을 삭제하려면 파일이 시스템 소유이거나 쓰기 권한이 있어야 합니다.
- get_filenames($sourceDir[, $includePath = false[, $hidden = false[, $includeDir = true]]])
- 매개변수:
$sourceDir (
string) – 디렉토리 경로$includePath (
bool|null) – 파일 이름에 경로를 포함할지 여부; false이면 경로 없음, null이면$sourceDir에 대한 상대 경로, true이면 전체 경로$hidden (
bool) – 숨김 파일(점으로 시작하는 파일) 포함 여부$includeDir (
bool) – 배열 출력에 디렉토리 포함 여부
- 반환:
파일 이름 배열
- 반환 형식:
array
서버 경로를 입력받아 그 안에 포함된 모든 파일 이름의 배열을 반환합니다. 두 번째 매개변수를 ‘relative’로 설정하면 상대 경로를, 다른 비어있지 않은 값으로 설정하면 전체 파일 경로를 파일 이름에 선택적으로 추가할 수 있습니다.
참고
v4.4.4 이전에는 버그로 인해 이 함수가 심볼릭 링크 폴더를 따라가지 않았습니다.
예시:
<?php $controllers = get_filenames(APPPATH . 'Controllers/');
- get_dir_file_info($sourceDir[, $topLevelOnly = true])
- 매개변수:
$sourceDir (
string) – 디렉토리 경로$topLevelOnly (
bool) – 지정된 디렉토리만 탐색할지 여부(하위 디렉토리 제외)
- 반환:
지정된 디렉토리 내용에 대한 정보를 담은 배열
- 반환 형식:
array
지정된 디렉토리를 읽어 파일 이름, 파일 크기, 날짜, 권한을 포함하는 배열을 구성합니다. 지정된 경로 내의 하위 폴더는 두 번째 매개변수를 false로 설정해야만 읽으며, 이는 집약적인 작업이 될 수 있습니다.
예시:
<?php $models_info = get_dir_file_info(APPPATH . 'Models/');
- get_file_info($file[, $returnedValues = ['name', 'server_path', 'size', 'date']])
- 매개변수:
$file (
string) – 파일 경로$returnedValues (
array|string) – 반환할 정보 유형으로 배열 또는 쉼표로 구분된 문자열로 전달합니다
- 반환:
지정된 파일에 대한 정보를 담은 배열, 실패 시 false
- 반환 형식:
array
파일과 경로를 받아 파일의 이름, 경로, 크기, 수정 날짜 정보 속성을 (선택적으로) 반환합니다. 두 번째 매개변수로 반환받을 정보를 명시적으로 지정할 수 있습니다.
유효한
$returnedValues옵션은name,size,date,readable,writeable,executable,fileperms입니다.
- symbolic_permissions($perms)
- 매개변수:
$perms (
int) – 권한
- 반환:
기호 권한 문자열
- 반환 형식:
string
fileperms()에서 반환되는 것과 같은 숫자 권한을 받아 파일 권한의 표준 기호 표기법을 반환합니다.
<?php echo symbolic_permissions(fileperms('./index.php')); // -rw-r--r--
- octal_permissions($perms)
- 매개변수:
$perms (
int) – 권한
- 반환:
8진수 권한 문자열
- 반환 형식:
string
fileperms()에서 반환되는 것과 같은 숫자 권한을 받아 세 자리 8진수 표기법으로 파일 권한을 반환합니다.
<?php echo octal_permissions(fileperms('./index.php')); // 644
- same_file($file1, $file2)
- 매개변수:
$file1 (
string) – 첫 번째 파일 경로$file2 (
string) – 두 번째 파일 경로
- 반환:
두 파일이 동일한 해시로 존재하는지 여부
- 반환 형식:
boolean
두 파일이 동일한지 비교합니다(MD5 해시 기반).
<?php echo same_file($newFile, $oldFile) ? 'Same!' : 'Different!';
- set_realpath($path[, $checkExistence = false])
- 매개변수:
$path (
string) – 경로$checkExistence (
bool) – 경로가 실제로 존재하는지 확인할지 여부
- 반환:
절대 경로
- 반환 형식:
string
이 함수는 심볼릭 링크나 상대 디렉토리 구조 없이 서버 경로를 반환합니다. 선택적 두 번째 인수를 지정하면 경로를 확인할 수 없을 때 오류가 발생합니다.
예시:
<?php $file = '/etc/php5/apache2/php.ini'; echo set_realpath($file); // Prints '/etc/php5/apache2/php.ini' $non_existent_file = '/path/to/non-exist-file.txt'; echo set_realpath($non_existent_file, true); // Shows an error, as the path cannot be resolved echo set_realpath($non_existent_file, false); // Prints '/path/to/non-exist-file.txt' $directory = '/etc/php5'; echo set_realpath($directory); // Prints '/etc/php5/' $non_existent_directory = '/path/to/nowhere'; echo set_realpath($non_existent_directory, true); // Shows an error, as the path cannot be resolved echo set_realpath($non_existent_directory, false); // Prints '/path/to/nowhere'