stat

(PHP 4, PHP 5, PHP 7, PHP 8)

statGives information about a file

Description

stat(string$filename): array|false

Gathers the statistics of the file named by filename. If filename is a symbolic link, statistics are from the file itself, not the symlink. Prior to PHP 7.4.0, on Windows NTS builds the size, atime, mtime and ctime statistics have been from the symlink, in this case.

lstat() is identical to stat() except it would instead be based off the symlinks status.

Parameters

filename

Path to the file.

Return Values

stat() and fstat() result format
NumericAssociativeDescription
0devdevice number ***
1inoinode number ****
2modeinode protection mode *****
3nlinknumber of links
4uiduserid of owner *
5gidgroupid of owner *
6rdevdevice type, if inode device
7sizesize in bytes
8atimetime of last access (Unix timestamp)
9mtimetime of last modification (Unix timestamp)
10ctimetime of last inode change (Unix timestamp)
11blksizeblocksize of filesystem IO **
12blocksnumber 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.

***** On Windows, the writable permission bit is set according to the read-only file attribute, and the same value is reported for all users, group and owner. The ACL is not taken into account, contrary to is_writable().

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 file types
mode in octalMeaning
0140000socket
0120000link
0100000regular file
0060000block device
0040000directory
0020000character device
0010000fifo
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.

Errors/Exceptions

Upon failure, an E_WARNING is emitted.

Changelog

VersionDescription
7.4.0 On Windows, the device number is now the serial number of the volume that contains the file, and the inode number is the identifier associated with the file.
7.4.0 The size, atime, mtime and ctime statistics of symlinks are always those of the target. This was previously not the case for NTS builds on Windows.

Examples

Example #1 stat() example

<?php

$stat = stat('C:\php\php.exe');


echo 'Access time: ' . $stat['atime'];


echo 'Modification time: ' . $stat['mtime'];


echo 'Device number: ' . $stat['dev'];
?>

Example #2 Using stat() information together with touch()

<?php

$stat = stat('C:\php\php.exe');


if (!$stat) {
echo
'stat() call failed...';
} else {

$atime = $stat['atime'] + 604800;


if (!touch('some_file.txt', time(), $atime)) {
echo
'Failed to touch file...';
} else {
echo
'touch() returned success...';
}
}
?>

Notes

Note:

Note that time resolution may differ from one file system to another.

Note: The results of this function are cached. See clearstatcache() for more details.

Tip

As of PHP 5.0.0, this function can also be used with some URL wrappers. Refer to Supported Protocols and Wrappers to determine which wrappers support stat() family of functionality.

See Also

To Top