stat

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

statВозвращает информацию о файле

Описание

stat(string$filename): array|false

Собирает статистическую информацию о файле filename. Если filename является символической ссылкой, информация собирается о самом файле, а не ссылке. До PHP 7.4.0 в Windows NTS в данном случае строил статистику size, atime, mtime и ctime из символьной ссылки.

Функция lstat() идентична функции stat() за исключением того, что в данном случае она вернёт информацию о самой символической ссылке.

Список параметров

filename

Путь к файлу.

Возвращаемые значения

Формат результата работы функций stat() и fstat()
ЧисловойАссоциативныйОписание
0devномер устройства ***
1inoномер inode ****
2modeрежим защиты inode *****
3nlinkколичество ссылок
4uiduserid владельца *
5gidgroupid владельца *
6rdevтип устройства, если устройство inode
7sizeразмер в байтах
8atimeвремя последнего доступа (временная метка Unix)
9mtimeвремя последней модификации (временная метка Unix)
10ctimeвремя последнего изменения inode (временная метка Unix)
11blksizeразмер блока ввода-вывода файловой системы **
12blocksколичество используемых 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 типов файлов
mode в восьмеричном видеЗначение
0140000сокет
0120000символическая ссылка
0100000обычный файл
0060000блочное устройство
0040000директория
0020000символьное устройство
0010000fifo
Так, например, обычный файл может быть 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(), смотрите в разделе Поддерживаемые протоколы и обёртки.

Смотрите также

  • lstat() - Возвращает информацию о файле или символической ссылке
  • fstat() - Получает информацию о файле по указателю открытого файла
  • filemtime() - Получает время последнего изменения файла
  • filegroup() - Получает идентификатор группы файла
  • SplFileInfo
To Top