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.
  
  Замечание: 
На 32-разрядных платформах отдельные PHP-функции для работы с файловой системой иногда возвращают
неожиданные результаты для файлов размером больше 2 ГБ, поскольку в PHP тип integer хранит числа со знаком,
а архитектура платформы ограничивает диапазон положительных значений типа.
  
 
  Ошибки
  
   В случае возникновения ошибки будет сгенерирована ошибка уровня 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