stat 함수
(PHP 4, PHP 5, PHP 7, PHP 8)
stat — 파일에 대한 정보를 제공합니다.
설명
stat(string $filename
): array|false
filename
으로 명명된 파일의 통계를 수집합니다. filename
이 심볼릭 링크인 경우 통계는 심볼릭 링크가 아니라 파일 자체에서 가져온 것입니다. PHP 7.4.0 이전에는 Windows NTS 빌드에서 크기, atime, mtime 및 ctime 통계가 이 경우 심볼릭 링크에서 가져왔습니다.
lstat()는 심볼릭 링크 상태를 기반으로 한다는 점을 제외하고는 stat()와 동일합니다.
매개변수
filename
- 파일의 경로입니다.
반환 값
stat() 및 fstat() 결과 형식
Numeric | Associative | 설명 |
---|---|---|
0 | dev | device number *** |
1 | ino | inode number **** |
2 | mode | inode protection mode ***** |
3 | nlink | number of links |
4 | uid | userid of owner * |
5 | gid | groupid of owner * |
6 | rdev | device type, if inode device |
7 | size | size in bytes |
8 | atime | time of last access (Unix timestamp) |
9 | mtime | time of last modification (Unix timestamp) |
10 | ctime | time of last inode change (Unix timestamp) |
11 | blksize | blocksize of filesystem IO ** |
12 | blocks | number of 512-byte blocks allocated ** |
* Windows에서는 항상 0입니다.
** st_blksize 유형을 지원하는 시스템에서만 유효합니다. 다른 시스템(예: Windows)은 -1을 반환합니다.
*** Windows에서는 PHP 7.4.0부터 파일이 포함된 볼륨의 일련 번호로 64비트 부호 없는 정수이므로 오버플로가 발생할 수 있습니다. 이전에는 stat()의 경우 드라이브 문자의 숫자 표현(예: C:의 경우 2)이었고 lstat()의 경우 0
이었습니다.
**** Windows에서는 PHP 7.4.0부터 파일과 연결된 식별자로 64비트 부호 없는 정수이므로 오버플로가 발생할 수 있습니다. 이전에는 항상 0
이었습니다.
***** Windows에서 쓰기 가능 권한 비트는 읽기 전용 파일 속성에 따라 설정되며 모든 사용자, 그룹 및 소유자에 대해 동일한 값이 보고됩니다. is_writable()과 달리 ACL은 고려되지 않습니다.
mode 값은 여러 함수에서 읽은 정보를 포함합니다. 8진수로 작성하면 오른쪽부터 시작하여 처음 세 자리가 chmod()에 의해 반환됩니다. 다음 숫자는 PHP에서 무시됩니다. 다음 두 자리는 파일 형식을 나타냅니다.
모드 파일 형식
mode in octal |
Meaning |
---|---|
0140000 |
socket |
0120000 |
link |
0100000 |
regular file |
0060000 |
block device |
0040000 |
directory |
0020000 |
character device |
0010000 |
fifo |
예를 들어 일반 파일은 0100644
가 될 수 있고 디렉토리는 0040755
가 될 수 있습니다. 오류가 발생하면 stat()는 false
를 반환합니다.
참고: PHP의 정수 유형은 부호가 있고 많은 플랫폼이 32비트 정수를 사용하기 때문에 일부 파일 시스템 함수는 2GB보다 큰 파일에 대해 예기치 않은 결과를 반환할 수 있습니다.
오류/예외
실패 시 E_WARNING
이 발생합니다.
변경 로그
버전 | 설명 |
---|---|
7.4.0 | Windows에서 장치 번호는 이제 파일을 포함하는 볼륨의 일련 번호이고 inode 번호는 파일과 관련된 식별자입니다. |
7.4.0 | 심볼릭 링크의 size, atime, mtime 및 ctime 통계는 항상 대상의 통계입니다. 이것은 이전에 Windows에서 NTS 빌드의 경우가 아니었습니다. |
Examples
예제 #1 stat() 예제
<?php
/* Get file stat */
$stat = stat('C:\php\php.exe');
/*
* Print file access time, this is the same
* as calling fileatime()
*/
echo 'Access time: ' . $stat['atime'];
/*
* Print file modification time, this is the
* same as calling filemtime()
*/
echo 'Modification time: ' . $stat['mtime'];
/* Print the device number */
echo 'Device number: ' . $stat['dev'];
?>
예제 #2 stat() 정보를 touch()와 함께 사용하기
<?php
/* Get file stat */
$stat = stat('C:\php\php.exe');
/* Did we failed to get stat information? */
if (!$stat) {
echo 'stat() call failed...';
} else {
/*
* We want the access time to be 1 week
* after the current access time.
*/
$atime = $stat['atime'] + 604800;
/* Touch the file */
if (!touch('some_file.txt', time(), $atime)) {
echo 'Failed to touch file...';
} else {
echo 'touch() returned success...';
}
}
?>
노트
메모: 시간 해상도는 파일 시스템마다 다를 수 있습니다.
메모: 이 함수의 결과는 캐시됩니다. 자세한 내용은 clearstatcache()를 참조하세요.
팁 PHP 5.0.0부터 이 함수는 일부 URL 래퍼와 함께 사용할 수도 있습니다. stat() 기능 제품군을 지원하는 래퍼를 확인하려면 지원되는 프로토콜 및 래퍼를 참조하세요.
기타
- lstat() - 파일 또는 심볼릭 링크에 대한 정보 제공
- fstat() - 열린 파일 포인터를 사용하여 파일에 대한 정보를 가져옵니다.
- filemtime() - 파일 수정 시간 가져오기
- filegroup() - 파일 그룹 가져오기
- SplFileInfo