mirror of
https://github.com/php/doc-ru.git
synced 2025-07-28 06:39:58 +00:00
354 lines
12 KiB
XML
354 lines
12 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 1f7d8b1ee9e6c7350857ddc8bfce248a65a29787 Maintainer: shein Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<refentry xml:id="function.stat" xmlns="http://docbook.org/ns/docbook">
|
||
<refnamediv>
|
||
<refname>stat</refname>
|
||
<refpurpose>Возвращает информацию о файле</refpurpose>
|
||
</refnamediv>
|
||
|
||
<refsect1 role="description">
|
||
&reftitle.description;
|
||
<methodsynopsis>
|
||
<type class="union"><type>array</type><type>false</type></type><methodname>stat</methodname>
|
||
<methodparam><type>string</type><parameter>filename</parameter></methodparam>
|
||
</methodsynopsis>
|
||
<para>
|
||
Собирает статистическую информацию о файле
|
||
<parameter>filename</parameter>. Если <parameter>filename</parameter>
|
||
является символической ссылкой, информация собирается о самом файле,
|
||
а не ссылке.
|
||
До PHP 7.4.0 в Windows <abbrev>NTS</abbrev> в данном случае
|
||
строил статистику <literal>size</literal>,
|
||
<literal>atime</literal>, <literal>mtime</literal> и <literal>ctime</literal> из символьной ссылки.
|
||
</para>
|
||
<para>
|
||
Функция <function>lstat</function> идентична функции
|
||
<function>stat</function> за исключением того, что в данном случае она
|
||
вернёт информацию о самой символической ссылке.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="parameters">
|
||
&reftitle.parameters;
|
||
<para>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><parameter>filename</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Путь к файлу.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="returnvalues">
|
||
&reftitle.returnvalues;
|
||
<para>
|
||
<table>
|
||
<title>Формат результата работы функций <function>stat</function> и
|
||
<function>fstat</function>
|
||
</title>
|
||
<tgroup cols="3">
|
||
<thead>
|
||
<row>
|
||
<entry>Числовой</entry>
|
||
<entry>Ассоциативный</entry>
|
||
<entry>Описание</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>0</entry>
|
||
<entry>dev</entry>
|
||
<entry>номер устройства ***</entry>
|
||
</row>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>ino</entry>
|
||
<entry>номер inode ****</entry>
|
||
</row>
|
||
<row>
|
||
<entry>2</entry>
|
||
<entry>mode</entry>
|
||
<entry>режим защиты inode *****</entry>
|
||
</row>
|
||
<row>
|
||
<entry>3</entry>
|
||
<entry>nlink</entry>
|
||
<entry>количество ссылок</entry>
|
||
</row>
|
||
<row>
|
||
<entry>4</entry>
|
||
<entry>uid</entry>
|
||
<entry>userid владельца *</entry>
|
||
</row>
|
||
<row>
|
||
<entry>5</entry>
|
||
<entry>gid</entry>
|
||
<entry>groupid владельца *</entry>
|
||
</row>
|
||
<row>
|
||
<entry>6</entry>
|
||
<entry>rdev</entry>
|
||
<entry>тип устройства, если устройство inode</entry>
|
||
</row>
|
||
<row>
|
||
<entry>7</entry>
|
||
<entry>size</entry>
|
||
<entry>размер в байтах</entry>
|
||
</row>
|
||
<row>
|
||
<entry>8</entry>
|
||
<entry>atime</entry>
|
||
<entry>время последнего доступа (временная метка Unix)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>9</entry>
|
||
<entry>mtime</entry>
|
||
<entry>время последней модификации (временная метка Unix)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>10</entry>
|
||
<entry>ctime</entry>
|
||
<entry>время последнего изменения inode (временная метка Unix)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>11</entry>
|
||
<entry>blksize</entry>
|
||
<entry>размер блока ввода-вывода файловой системы **</entry>
|
||
</row>
|
||
<row>
|
||
<entry>12</entry>
|
||
<entry>blocks</entry>
|
||
<entry>количество используемых 512-байтных блоков **</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
</para>
|
||
<para>
|
||
* В Windows это всегда будет <literal>0</literal>.
|
||
</para>
|
||
<para>
|
||
** Доступен только на системах, поддерживающих тип st_blksize - другие
|
||
системы (например, Windows) вернут <literal>-1</literal>.
|
||
</para>
|
||
<para>
|
||
*** В Windows, начиная с PHP 7.4.0, это серийный номер тома, содержащего файл,
|
||
который представляет собой 64-разрядное целое число <emphasis>без знака</emphasis>,
|
||
поэтому может переполниться в 32-разрядных системах.
|
||
Ранее это было числовое представление буквы диска (например, <literal>2</literal>
|
||
для <literal>C:</literal>) для <function>stat</function> и <literal>0</literal> для
|
||
<function>lstat</function>.
|
||
</para>
|
||
<para>
|
||
**** В Windows, начиная с PHP 7.4.0, идентификатор, связанный с файлом,
|
||
который представляет собой 64-разрядное целое число <emphasis>без знака</emphasis>, может переполниться в 32-разрядных системах.
|
||
Ранее он всегда был <literal>0</literal>.
|
||
</para>
|
||
<para>
|
||
***** В Windows бит разрешения на запись устанавливается в соответствии с атрибутом файла только для чтения,
|
||
одно и то же значение сообщается для всех пользователей, группы и владельца.
|
||
ACL не учитывается, в отличие от <function>is_writable</function>.
|
||
</para>
|
||
<para>
|
||
Значение <literal>mode</literal> содержит информацию, читаемую несколькими функциями.
|
||
При записи в восьмеричном виде, начиная справа, первые три цифры возвращаются функцией
|
||
<function>chmod</function>. Следующая цифра игнорируется PHP. Следующие две цифры указывают
|
||
тип файла:
|
||
<table>
|
||
<title><literal>mode</literal> типов файлов</title>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry><literal>mode</literal> в восьмеричном виде</entry>
|
||
<entry>Значение</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry><constant>0140000</constant></entry>
|
||
<entry>сокет</entry>
|
||
</row>
|
||
<row>
|
||
<entry><constant>0120000</constant></entry>
|
||
<entry>символическая ссылка</entry>
|
||
</row>
|
||
<row>
|
||
<entry><constant>0100000</constant></entry>
|
||
<entry>обычный файл</entry>
|
||
</row>
|
||
<row>
|
||
<entry><constant>0060000</constant></entry>
|
||
<entry>блочное устройство</entry>
|
||
</row>
|
||
<row>
|
||
<entry><constant>0040000</constant></entry>
|
||
<entry>директория</entry>
|
||
</row>
|
||
<row>
|
||
<entry><constant>0020000</constant></entry>
|
||
<entry>символьное устройство</entry>
|
||
</row>
|
||
<row>
|
||
<entry><constant>0010000</constant></entry>
|
||
<entry>fifo</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
Так, например, обычный файл может быть <constant>0100644</constant>, а директория может быть <constant>0040755</constant>.
|
||
</para>
|
||
<para>
|
||
В случае возникновения ошибки <function>stat</function> возвращает &false;.
|
||
</para>
|
||
&fs.file.32bit;
|
||
</refsect1>
|
||
|
||
<refsect1 role="errors">
|
||
&reftitle.errors;
|
||
<para>
|
||
В случае возникновения ошибки будет сгенерирована ошибка уровня <constant>E_WARNING</constant>.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="changelog">
|
||
&reftitle.changelog;
|
||
<informaltable>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>&Version;</entry>
|
||
<entry>&Description;</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>7.4.0</entry>
|
||
<entry>
|
||
В Windows номер устройства теперь является серийным номером тома,
|
||
содержащего файл и номер inode - это идентификатор, связанный с файлом.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>7.4.0</entry>
|
||
<entry>
|
||
Статистика символьных ссылок <literal>size</literal>, <literal>atime</literal>, <literal>mtime</literal> и
|
||
<literal>ctime</literal> всегда соответствует статистике целевого объекта.
|
||
Это было ранее не характерно для <abbrev>NTS</abbrev>-сборки на Windows.
|
||
</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
</refsect1>
|
||
|
||
<refsect1 role="examples">
|
||
&reftitle.examples;
|
||
<para>
|
||
<example>
|
||
<title>Пример использования <function>stat</function></title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
/* Получаем статистику файла */
|
||
$stat = stat('C:\php\php.exe');
|
||
|
||
/*
|
||
* Выводим последнее время доступа к файлу, это то же самое, что и
|
||
* вызов fileatime()
|
||
*/
|
||
echo 'Последнее время доступа: ' . $stat['atime'];
|
||
|
||
/*
|
||
* Выводим время изменения файла, это то же самое, что и
|
||
* вызов filemtime()
|
||
*/
|
||
echo 'Время изменения: ' . $stat['mtime'];
|
||
|
||
/* Выводим номер устройства */
|
||
echo 'Номер устройства: ' . $stat['dev'];
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>Использование информации из <function>stat</function> вместе с <function>touch</function></title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?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() выполнился успешно...';
|
||
}
|
||
}
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="notes">
|
||
&reftitle.notes;
|
||
¬e.filesystem-time-res;
|
||
¬e.clearstatcache;
|
||
&tip.fopen-wrapper.stat;
|
||
</refsect1>
|
||
|
||
<refsect1 role="seealso">
|
||
&reftitle.seealso;
|
||
<para>
|
||
<simplelist>
|
||
<member><function>lstat</function></member>
|
||
<member><function>fstat</function></member>
|
||
<member><function>filemtime</function></member>
|
||
<member><function>filegroup</function></member>
|
||
<member><classname>SplFileInfo</classname></member>
|
||
</simplelist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
</refentry>
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|