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, mtimectime 통계는 항상 대상의 통계입니다. 이것은 이전에 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