stat
Description
The stat of Filesystem for PHP gives information about a file.
Syntax
stat ( string $filename ) : array
Parameters
filename
Path to the file.
Return
Numeric | Associative | Description |
---|---|---|
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 ** |
* On Windows this will always be 0.
** Only valid on systems supporting the st_blksize type - other systems (e.g. Windows) return -1.
*** On Windows, as of PHP 7.4.0, this is the serial number of the volume that contains the file, which is a 64-bit unsigned integer, so may overflow. Previously, it was the numeric representation of the drive letter (e.g. 2 for C:) for stat(), and 0 for lstat().
**** On Windows, as of PHP 7.4.0, this is the identifier associated with the file, which is a 64-bit unsigned integer, so may overflow. Previously, it was always 0.
The value of mode contains information read by several functions. When written in octal, starting from the right, the first three digits are returned by chmod(). The next digit is ignored by PHP. The next two digits indicate the file type:
mode in octal | Meaning |
---|---|
0120000 | link |
0100000 | regular file |
0060000 | block device |
0040000 | directory |
0010000 | fifo |
So for example a regular file could be 0100644 and a directory could be 0040755. In case of error, stat() returns FALSE.
Note: Because PHP's integer type is signed and many platforms use 32bit integers, some filesystem functions may return unexpected results for files which are larger than 2GB.
Examples
1
<? $filename = $_SERVER['DOCUMENT_ROOT']; $stat = stat($filename); for ($i = 0; $i <= 12; ++$i) { echo $stat[$i] . "\n"; }
64772 1441857 16872 33 0 0 0 4096 1596481871 1596481833 1596481833 4096 8
2
<? $filename = $_SERVER['DOCUMENT_ROOT']; $stat = stat($filename); echo "dev: " . $stat['dev'] . "\n"; echo "ino: " . $stat['ino'] . "\n"; echo "mode: " . $stat['mode'] . "\n"; echo "nlink: " . $stat['nlink'] . "\n"; echo "uid: " . $stat['uid'] . "\n"; echo "gid: " . $stat['gid'] . "\n"; echo "rdev: " . $stat['rdev'] . "\n"; echo "size: " . $stat['size'] . "\n"; echo "atime: " . $stat['atime'] . "\n"; // fileatime() echo "mtime: " . $stat['mtime'] . "\n"; // filemtime() echo "ctime: " . $stat['ctime'] . "\n"; // filectime() echo "blksize: " . $stat['blksize'] . "\n"; echo "blocks: " . $stat['blocks'];
dev: 64772 ino: 1441857 mode: 16872 nlink: 33 uid: 0 gid: 0 rdev: 0 size: 4096 atime: 1596481871 mtime: 1596481833 ctime: 1596481833 blksize: 4096 blocks: 8
3
<? $filename = $_SERVER['DOCUMENT_ROOT']; $stat = stat($filename); if (!$stat) { echo 'stat() fail'; } else { // access time 1 week after current access time $atime = $stat['atime'] + 604800; if (!touch('stat.txt', time(), $atime)) { echo 'touch() fail'; } else { echo 'touch() success'; } }
touch() success
Links
Filesystem
- basename
- chgrp
- chmod
- chown
- clearstatcache
- copy
- dirname
- disk_free_space
- disk_total_space
- diskfreespace
- fclose
- feof
- fflush
- fgetc
- fgetcsv
- fgets
- file
- file_exists
- file_get_contents
- file_put_contents
- fileatime
- filectime
- filegroup
- fileinode
- filemtime
- fileowner
- fileperms
- filesize
- filetype
- flock
- fnmatch
- fopen
- fpassthru
- fputcsv
- fputs
- fread
- fscanf
- fseek
- fstat
- ftell
- ftruncate
- fwrite
- glob
- is_dir
- is_executable
- is_file
- is_link
- is_readable
- is_uploaded_file
- is_writable
- is_writeable
- lchgrp
- lchown
- link
- linkinfo
- lstat
- mkdir
- move_uploaded_file
- pathinfo
- pclose
- popen
- readfile
- readlink
- realpath
- realpath_cache_get
- realpath_cache_size
- rename
- rewind
- rmdir
- set_file_buffer
- symlink
- tempnam
- tmpfile
- touch
- umask
- unlink