파일시스템 헬퍼

파일시스템 헬퍼 파일에는 파일 및 디렉토리 작업을 지원하는 함수들이 포함되어 있습니다.

헬퍼 로드

이 헬퍼는 다음 코드를 사용하여 로드합니다:

<?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'