(PHP 4, PHP 5, PHP 7, PHP 8)
stat — Возвращает информацию о файле
Собирает статистическую информацию о файле filename
. Если filename
является символической ссылкой, информация собирается о самом файле, а не ссылке. До PHP 7.4.0 в Windows NTS в данном случае строил статистику size
, atime
, mtime
и ctime
из символьной ссылки.
Функция lstat() идентична функции stat() за исключением того, что в данном случае она вернёт информацию о самой символической ссылке.
filename
Путь к файлу.
Числовой | Ассоциативный | Описание |
---|---|---|
0 | dev | номер устройства *** |
1 | ino | номер inode **** |
2 | mode | режим защиты inode ***** |
3 | nlink | количество ссылок |
4 | uid | userid владельца * |
5 | gid | groupid владельца * |
6 | rdev | тип устройства, если устройство inode |
7 | size | размер в байтах |
8 | atime | время последнего доступа (временная метка Unix) |
9 | mtime | время последней модификации (временная метка Unix) |
10 | ctime | время последнего изменения inode (временная метка Unix) |
11 | blksize | размер блока ввода-вывода файловой системы ** |
12 | blocks | количество используемых 512-байтных блоков ** |
* В Windows это всегда будет 0
.
** Доступен только на системах, поддерживающих тип st_blksize - другие системы (например, Windows) вернут -1
.
*** В Windows, начиная с PHP 7.4.0, это серийный номер тома, содержащего файл, который представляет собой 64-разрядное целое число без знака, поэтому может переполниться в 32-разрядных системах. Ранее это было числовое представление буквы диска (например, 2
для C:
) для stat() и 0
для lstat().
**** В Windows, начиная с PHP 7.4.0, идентификатор, связанный с файлом, который представляет собой 64-разрядное целое число без знака, может переполниться в 32-разрядных системах. Ранее он всегда был 0
.
***** В Windows бит разрешения на запись устанавливается в соответствии с атрибутом файла только для чтения, одно и то же значение сообщается для всех пользователей, группы и владельца. ACL не учитывается, в отличие от is_writable().
Значение mode
содержит информацию, читаемую несколькими функциями. При записи в восьмеричном виде, начиная справа, первые три цифры возвращаются функцией chmod(). Следующая цифра игнорируется PHP. Следующие две цифры указывают тип файла:
mode в восьмеричном виде | Значение |
---|---|
0140000 | сокет |
0120000 | символическая ссылка |
0100000 | обычный файл |
0060000 | блочное устройство |
0040000 | директория |
0020000 | символьное устройство |
0010000 | fifo |
0100644
, а директория может быть 0040755
. В случае возникновения ошибки stat() возвращает false
.
Замечание: Поскольку тип integer в PHP — целое число со знаком, а многие платформы используют 32-битные целые числа, отдельные функции файловых систем могут возвращать неожиданные результаты для файлов размером больше 2 ГБ.
В случае возникновения ошибки будет сгенерирована ошибка уровня E_WARNING
.
Версия | Описание |
---|---|
7.4.0 | В Windows номер устройства теперь является серийным номером тома, содержащего файл и номер inode - это идентификатор, связанный с файлом. |
7.4.0 | Статистика символьных ссылок size , atime , mtime и ctime всегда соответствует статистике целевого объекта. Это было ранее не характерно для NTS-сборки на Windows. |
Пример #1 Пример использования stat()
<?php
$stat = stat('C:\php\php.exe');
echo 'Последнее время доступа: ' . $stat['atime'];
echo 'Время изменения: ' . $stat['mtime'];
echo 'Номер устройства: ' . $stat['dev'];
?>
Пример #2 Использование информации из stat() вместе с touch()
<?php
$stat = stat('C:\php\php.exe');
if (!$stat) {
echo 'вызов stat() не удался...';
} else {
$atime = $stat['atime'] + 604800;
if (!touch('some_file.txt', time(), $atime)) {
echo 'Не удалось коснуться файла...';
} else {
echo 'touch() выполнился успешно...';
}
}
?>
Замечание:
Учтите, что обработка времени может отличаться в различных файловых системах.
Замечание: Результаты этой функции кешируются. Более подробную информацию смотрите в разделе clearstatcache().
Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми обёртками url. Список обёрток, поддерживаемых семейством функций stat(), смотрите в разделе Поддерживаемые протоколы и обёртки.