stat

(PHP 4, PHP 5, PHP 7)

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

Описание

stat ( string $filename ) : array|false

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

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

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

filename

Путь к файлу.

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

Формат результата работы функций stat() и fstat()
Числовой Ассоциативный Описание
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.

Значение mode содержит информацию, читаемую несколькими функциями. При записи в восьмеричном виде, начиная справа, первые три цифры возвращаются функцией chmod(). Следующая цифра игнорируется PHP. Следующие две цифры указывают тип файла:

mode типов файлов
mode в восьмеричном виде Значение
0120000 символическая ссылка
0100000 обычный файл
0060000 блочное устройство
0040000 директория
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');

/*
 * Выводим последнее время доступа к файлу, это то же самое, что и
 * вызов fileatime()
 */
echo 'Последнее время доступа: ' $stat['atime'];

/*
 * Выводим время изменения файла, это то же самое, что и
 * вызов filemtime()
 */
echo 'Время изменения: ' $stat['mtime'];

/* Выводим номер устройства */
echo 'Номер устройства: ' $stat['dev'];
?>

Пример #2 Использование информации из stat() вместе с touch()

<?php
/* Получаем статистику файла */
$stat stat('C:\php\php.exe');

/* Удалось получить эту статистику? */
if (!$stat) {
    echo 
'вызов stat() не удался...';
} else {
    
/*
     * Мы хотим увеличить время последнего доступа к файлу
     * на 1 неделю вперед.
     */
    
$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() - Получает идентификатор группы файла