stat
(PHP 4, PHP 5, PHP 7, PHP 8)
stat — Возвращает информацию о файле
Описание
Функция 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
.
***** В Windows бит разрешения на запись устанавливается в соответствии с атрибутом файла только для чтения,
одно и то же значение сообщается для всех пользователей, группы и владельца.
ACL не учитывается, в отличие от is_writable().
Значение mode
содержит информацию, читаемую несколькими функциями.
При записи в восьмеричном виде, начиная справа, первые три цифры возвращаются функцией
chmod(). Следующая цифра игнорируется PHP. Следующие две цифры указывают
тип файла:
mode
типов файлов
mode в восьмеричном виде |
Значение |
0140000 |
сокет |
0120000 |
символическая ссылка |
0100000 |
обычный файл |
0060000 |
блочное устройство |
0040000 |
директория |
0020000 |
символьное устройство |
0010000 |
fifo |
Так, например, обычный файл может быть
0100644
, а директория может быть
0040755
.
В случае возникновения ошибки stat() возвращает false
.
Замечание:
Поскольку тип integer в PHP — целое число со знаком, а многие платформы используют 32-битные целые числа,
отдельные функции файловых систем могут возвращать неожиданные результаты для файлов
размером больше 2 ГБ.
Ошибки
В случае возникновения ошибки будет сгенерирована ошибка уровня E_WARNING
.
Примеры
Пример #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() - Получает идентификатор группы файла
- SplFileInfo