[PHP]파일시스템(file system)

Seo Joonsoo·2022년 6월 21일
0

php

목록 보기
13/23

basename(string $path, string $suffix = ""): string

파일이나 디렉토리에 대한 경로를 포함하는 문자열이 주어지면 이 함수는 후행 이름 구성요소를 반환합니다.
basename() 은 로케일을 인식하므로 멀티바이트 문자 경로가 있는 올바른 기본 이름을 보려면 setlocale() 함수를 사용하여 일치하는 로케일을 설정해야 합니다. path현재 로케일에 유효하지 않은 문자가 포함되어있으면 basename() 의 동작 이 정의되지 않습니다.

  • dirname() - 상위 디렉토리의 경로를 반환합니다.
  • pathinfo() - 파일 경로에 대한 정보를 반환합니다.
echo "1) ".basename("/etc/sudoers.d", ".d").PHP_EOL;
echo "2) ".basename("/etc/sudoers.d").PHP_EOL;
echo "3) ".basename("/etc/passwd").PHP_EOL;
echo "4) ".basename("/etc/").PHP_EOL;
echo "5) ".basename(".").PHP_EOL;
echo "6) ".basename("/");
/* result to:
	1) sudoers
	2) sudoers.d
	3) passwd
	4) etc
	5) .
	6) 
*/

realpath(string $path): string|false

정규화된 절대 경로 이름을 반환 합니다. 성공 시 정규화된 절대 경로 이름을 반환합니다. 결과 경로에는 기호 링크 /./, /../ 또는 extra /구성 요소가 없습니다. \및 /와 같은 후행 구분 기호도 제거됩니다.

실행 중인 스크립트에는 계층 구조의 모든 디렉토리에 대한 실행 권한이 있어야 합니다. 그렇지 않으면 realpath()가 false를 반환 합니다.

예제 #1

chdir('/var/www/');
echo realpath('./../../etc/passwd') . PHP_EOL;
echo realpath('/tmp/') . PHP_EOL;
/* 출력결과:
/etc/passwd 
/tmp
*/

예제 #2. Windows의 realpath()

echo realpath('/windows/system32'), PHP_EOL;
echo realpath('C:\Program Files\\'), PHP_EOL;
/* 실행 결과
C:\WINDOWS\System32
C:\Program Files
*/

pathinfo(string $path, int $flags = PATHINFO_ALL): array|string

파일 경로에 대한 정보를 반환합니다. 현재 경로 정보 검색에 대한 정보는 사전 정의된 예약 변수 섹션을 참조하세요.

※ pathinfo() 는 로케일을 인식하므로 멀티바이트 문자가 포함된 경로를 올바르게 구문 분석하려면 setlocale() 함수를 사용하여 일치하는 로케일을 설정해야 합니다.


예제 #1 pathinfo() 기본 사용

$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n";
/* output:
/www/htdocs/inc
lib.inc.php
php
lib.inc
*/

glob(string $pattern, int $flags = 0): array|false

libc glob() 함수에서 사용하는 규칙에 따라 pattern에 일치하는 모든 경로 이름을 검색합니다. 이는 일반적인 셸에서 사용하는 규칙과 유사합니다.

foreach (glob("*.txt") as $filename) {
    echo "$filename size " . filesize($filename) . "\n";
}
/* result to:
funclist.txt size 44686
funcsummary.txt size 267625
quickref.txt size 137820
*/

fnmatch(string $pattern, string $filename, int $flags = 0): bool

전달된 $filename 항목이 지정된 $pattern이 일치하는지 판별합니다. (패턴에 대해 파일 이름 일치 여부 체크)

사실 fnmatch보다는 결국 정규표현식을 활용해 체크하는게 일반적인 방법 입니다.


copy(string $from, string $to, ?resource $context = null): bool

$from에 파일 $to를 복사 합니다. 파일을 이동하려면 rename() 함수를 사용하세요!

※ 대상 파일이 이미 있는 경우 덮어씁니다.

  • move_uploaded_file() - 업로드된 파일을 새 위치로 이동합니다.

  • rename() - 파일 또는 디렉토리의 이름을 바꿉니다.


mkdir(string $directory, int $permissions = 0777, bool $recursive = false, ?resource $context = null): bool

$directory에 의해 지정된 디렉토리 생성을 시도합니다.

is_dir() - 파일 이름이 디렉토리인지 여부를 알려줍니다.


rmdir(string $directory, ?resource $context = null): bool

$directory에 의해 명명된 디렉토리를 제거하려고 시도합니다. 디렉토리는 비어 있어야 하며 관련 권한이 이를 허용해야 합니다.


unlink(string $filename, ?resource $context = null): bool

$filename을 삭제 합니다. Unix C unlink() 함수와 유사합니다.


fopen( string $filename, string $mode, bool $use_include_path = false, ?resource $context = null): resource|false

파일 또는 URL을 엽니다.

$handle = fopen("/home/rasmus/file.txt", "r");
$handle = fopen("/home/rasmus/file.gif", "wb");
$handle = fopen("http://www.example.com/", "r");
$handle = fopen("ftp://user:password@example.com/somefile.txt", "w");

fopen()의 사용 가능한 $mode 목록 및 설명

file_get_contents(string $filename, bool $use_include_path = false, ?resource $context = null, int $offset = 0, ?int $length = null): string|false

전체 파일을 문자열로 읽습니다. 이 함수는 file_get_contents() 가 지정된 최대 바이트에서 시작하여 문자열로 파일을 반환 한다는 점을 제외하면 file() 과 유사합니다.

※ 공백과 같은 특수 문자가 있는 URI를 여는 경우 urlencode() 를 사용하여 URI를 인코딩해야 합니다 .


file(string $filename, int $flags = 0, ?resource $context = null): array|false

전체 파일을 배열로 반환해 줍니다.

  • file_get_contents() 를 사용하여 파일의 내용을 문자열로 반환 할 수 있습니다 .

라인별로 각 index key마다 담기게 되는데 $flags 옵션을 통해 빈 라인은 제외할 수도 있습니다.


readfile(string $filename, bool $use_include_path = false, ?resource $context = null): int|false

파일을 출력합니다.

예제 #1 readfile()을 사용하여 강제 다운로드

$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}

fgets(resource $stream, ?int $length = null): string|false

파일 포인터에서 한 줄을 가져옵니다.

예제 #1. 파일을 한 줄씩 읽기

$fp = @fopen("/tmp/inputfile.txt", "r");
if ($fp) {
    while (($buffer = fgets($fp, 4096)) !== false) {
        echo $buffer;
    }
    if (!feof($fp)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($fp);
}

feof(resource $stream): bool

파일 포인터에서 파일 끝을 테스트합니다. 파일의 끝인지 알아보고 끝이 아니면 다음 라인을 가져올 때 체크용으로 사용합니다.


fseek(resource $stream, int $offset, int $whence = SEEK_SET): int

파일 포인터를 찾거나 설정합니다.

$whence값은 다음과 같습니다.

SEEK_SET- 위치를 offset바이트와 ​​동일하게 설정합니다.
SEEK_CUR- 위치를 현재 위치 플러스로 설정 offset합니다.
SEEK_END- 위치를 파일 끝 플러스로 설정합니다 offset.

$fp = fopen('somefile.txt', 'r');
$data = fgets($fp, 4096);
fseek($fp, 0);

ftell(resource $stream): int|false

파일 읽기/쓰기 포인터의 현재 위치를 반환합니다.

fp=fopen("/etc/passwd","r");fp = fopen("/etc/passwd", "r");data = fgets(fp,12);echoftell(fp, 12); echo ftell(fp); // 11
fclose($fp);
rewind() - 파일 포인터의 위치를 ​​되감습니다.


rewind(resource $stream): bool

파일 포인터의 위치를 초기화합니다.


fpassthru(resource $stream): int

파일 포인터에 남아 있는 모든 데이터 출력


fread(resource $stream, int $length): string|false

// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);

fwrite(resource $stream, string $data, ?int $length = null): int|false

파일 스트림에 데이터를 씁니다.


file_put_contents( string $filename, mixed $data, int $flags = 0, ?resource $context = null ): int|false

파일에 데이터를 쓰는 함수로, fopen() , fwrite() 및 fclose() 를 연속적으로 호출하여 파일에 데이터를 쓰는 것과 동일합니다.


fflush(resource $stream): bool

이 함수는 버퍼링된 모든 출력을 파일이 가리키는 리소스에 강제로 기록합니다


예제 #1 fflush() 를 사용한 파일 쓰기 예제

$filename = 'bar.txt';

$file = fopen($filename, 'r+');
rewind($file);
fwrite($file, 'Foo');
fflush($file);
ftruncate($file, ftell($file));
fclose($file);

ftruncate(resource $stream, int $size): bool

파일을 주어진 길이로 자릅니다.


fclose(resource $stream): bool

열려 있는 파일 포인터를 닫습니다.


$handle = fopen('somefile.txt', 'r');

fclose($handle);


fstat(resource $stream): array|false

열린 파일 포인터를 사용하여 파일에 대한 정보를 가져 옵니다.


stat(string $filename): array|false

fstat()과 달리 파일 경로를 통해 파일에 대한 정보를 가져옵니다.


하드 링크를 생성합니다.


심볼릭 링크를 생성합니다.

link() - 하드 링크 생성
readlink() - 심볼릭 링크의 대상을 반환합니다. (원본)
linkinfo() - 링크에 대한 정보를 가져 옵니다.
unlink() - 파일 삭제



파일 개별 정보 가져오기

fileatime — 파일의 마지막 액세스 시간을 가져 옵니다.
filectime — 파일의 inode 변경 시간을 가져 옵니다.
filegroup — 파일 그룹을 가져 옵니다.
fileinode — 파일 inode를 가져 옵니다.
filemtime — 파일 수정 시간을 가져 옵니다.
fileowner — 파일 소유자 가져 오기
fileperms — 파일 권한 을 얻습니다.
filesize — 파일 크기 가져 오기
filetype — 파일 형식 가져 오기


기본 검증

is_dir — 파일 이름이 디렉토리인지 여부를 알려줍니다.
is_file — 파일 이름이 일반 파일인지 여부를 알려줍니다.
is_link — 파일 이름이 심볼릭 링크인지 여부를 알려줍니다.
is_executable — 파일 이름이 실행 가능한지 여부를 알려줍니다.
is_readable — 파일이 존재하고 읽을 수 있는지 여부를 알려줍니다.
is_uploaded_file — 파일이 HTTP POST를 통해 업로드되었는지 여부를 알려줍니다.
is_writable — 파일 이름이 쓰기 가능한지 여부를 알려줍니다.
is_writeable — is_writable의 별칭



Filesystem

Predefined Constants

Filesystem Functions

  • basename — 경로의 후행 이름 구성요소를 반환합니다.
  • chgrp — 파일 그룹 변경
  • chmod — 파일 모드 변경
  • chown — 파일 소유자 변경
  • clearstatcache — 파일 상태 캐시를 지웁니다.
  • copy — 파일을 복사합니다.
  • delete — 연결 해제 또는 설정 해제 참조
  • dirname — 상위 디렉토리의 경로를 반환합니다.
  • disk_free_space — 파일 시스템 또는 디스크 파티션에서 사용 가능한 공간을 반환합니다.
  • disk_total_space — 파일 시스템 또는 디스크 파티션의 전체 크기를 반환합니다.
  • diskfreespace — disk_free_space의 별칭
  • fclose — 열려 있는 파일 포인터를 닫습니다.
  • fdatasync — 데이터(메타 데이터 제외)를 파일에 동기화합니다.
  • feof — 파일 포인터에서 파일 끝 테스트
  • fflush — 출력을 파일로 플러시합니다.
  • fgetc — 파일 포인터에서 문자 가져오기
  • fgetcsv — 파일 포인터에서 행을 가져오고 CSV 필드에 대한 구문 분석
  • fgets — 파일 포인터에서 라인 가져오기
  • fgetss — 파일 포인터에서 줄을 가져오고 HTML 태그를 제거합니다.
  • file_exists — 파일이나 디렉토리가 존재하는지 확인
  • file_get_contents — 전체 파일을 문자열로 읽습니다.
  • file_put_contents — 파일에 데이터 쓰기
  • file — 전체 파일을 배열로 읽습니다.
  • fileatime — 파일의 마지막 액세스 시간을 가져 옵니다.
  • filectime — 파일의 inode 변경 시간을 가져 옵니다.
  • filegroup — 파일 그룹을 가져 옵니다.
  • fileinode — 파일 inode를 가져 옵니다.
  • filemtime — 파일 수정 시간을 가져 옵니다.
  • fileowner — 파일 소유자 가져 오기
  • fileperms — 파일 권한 을 얻습니다.
  • filesize — 파일 크기 가져 오기
  • filetype — 파일 형식 가져 오기
  • flock — 이동 가능한 자문 파일 잠금
  • fnmatch — 패턴에 대해 파일 이름 일치
  • fopen — 파일 또는 URL을 엽니 다.
  • fpassthru — 파일 포인터에 남아 있는 모든 데이터 출력
  • fputcsv — 행을 CSV로 형식화하고 파일 포인터에 쓰기
  • fputs — fwrite의 별칭
  • fread — 바이너리 안전 파일 읽기
  • fscanf — 형식에 따라 파일의 입력을 구문 분석합니다.
  • fseek — 파일 포인터 찾기
  • fstat — 열린 파일 포인터를 사용하여 파일에 대한 정보를 가져 옵니다.
  • fsync — 파일의 변경 사항을 동기화합니다(메타 데이터 포함).
  • ftell — 파일 읽기/쓰기 포인터의 현재 위치를 반환합니다.
  • ftruncate — 파일을 주어진 길이로 자릅니다.
  • fwrite — 이진 안전 파일 쓰기
  • glob — 패턴과 일치하는 경로 이름 찾기
  • is_dir — 파일 이름이 디렉토리인지 여부를 알려줍니다.
  • is_executable — 파일 이름이 실행 가능한지 여부를 알려줍니다.
  • is_file — 파일 이름이 일반 파일인지 여부를 알려줍니다.
  • is_link — 파일 이름이 심볼릭 링크인지 여부를 알려줍니다.
  • is_readable — 파일이 존재하고 읽을 수 있는지 여부를 알려줍니다.
  • is_uploaded_file — 파일이 HTTP POST를 통해 업로드되었는지 여부를 알려줍니다.
  • is_writable — 파일 이름이 쓰기 가능한지 여부를 알려줍니다.
  • is_writeable — is_writable의 별칭
  • lchgrp — 심볼릭 링크의 그룹 소유권 변경
  • lchown — symlink의 사용자 소유권 변경
  • link — 하드 링크 만들기
  • linkinfo — 링크에 대한 정보를 가져 옵니다.
  • lstat — 파일 또는 심볼릭 링크에 대한 정보 제공
  • mkdir — 디렉토리를 만듭니다.
  • move_uploaded_file — 업로드된 파일을 새 위치로 이동합니다.
  • parse_ini_file — 구성 파일 구문 분석
  • parse_ini_string — 구성 문자열 구문 분석
  • pathinfo — 파일 경로에 대한 정보를 반환합니다.
  • pclose — 프로세스 파일 포인터를 닫습니다.
  • popen — 프로세스 파일 포인터를 엽니 다.
  • readfile — 파일을 출력합니다.
  • readlink — 심볼릭 링크의 대상을 반환합니다.
  • realpath_cache_get — 실제 경로 캐시 항목 가져오기
  • realpath_cache_size — 실제 경로 캐시 크기 가져오기
  • realpath — 정규화된 절대 경로 이름을 반환 합니다.
  • rename — 파일 또는 디렉터리의 이름을 바꿉니다.
  • rewind — 파일 포인터의 위치를 ​​되감습니다.
  • rmdir — 디렉토리 제거
  • set_file_buffer — stream_set_write_buffer의 별칭
  • stat — 파일에 대한 정보 제공
  • symlink — 심볼릭 링크를 생성합니다.
  • tempnam — 고유한 파일 이름으로 파일 생성
  • tmpfile — 임시 파일을 생성합니다.
  • touch — 파일의 액세스 및 수정 시간 설정
  • umask — 현재 umask를 변경합니다.
  • unlink — 파일을 삭제합니다.
profile
여러분들 삶에 한 획을 더하고 싶습니다.

0개의 댓글