Files
php-doc-ru/reference/filesystem/functions/fileperms.xml
Sergey Panteleev 6d43fd64d7 Исправление форматирования
[skip-spellcheck]
[skip-lint]
2022-12-27 03:42:36 +03:00

194 lines
5.8 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 871a231f4a1caa5fb258ae53b1bb7d1fb2a0f949 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.fileperms" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>fileperms</refname>
<refpurpose>Возвращает информацию о правах на файл</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>false</type></type><methodname>fileperms</methodname>
<methodparam><type>string</type><parameter>filename</parameter></methodparam>
</methodsynopsis>
<para>
Возвращает информацию о правах доступа на файл.
</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>
Возвращает права доступа на указанный файл в числовом виде.
Младшие биты этого значения такие же, как и биты прав доступа для
использования в функции <function>chmod</function>, однако, на
большинстве платформ, возвращаемое значение будет также включать
информацию о типе файла, который передан в качестве параметра
<parameter>filename</parameter>. Примеры ниже демонстрируют
как проверить возвращаемое значение на наличие определённых
прав и типа файла на POSIX-системах, включая Linux и macOS.
</para>
<para>
Для локальных файлов, возвращаемое значение является частью
структуры <literal>st_mode</literal>, которая возвращается функцией
С-библиотеки <function>stat</function>. Какие в точности биты установлены может
варьироваться от платформы к платформе. Рекомендуется поискать документацию
к вашей платформе, если требуется обработка битов возвращаемого значения,
не относящихся к правам доступа.
</para>
<para>
Возвращает &false; в случае возникновения ошибки.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
&fs.emits.warning.on.failure;
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Отображение прав доступа в виде восьмеричного числа</title>
<programlisting role="php">
<![CDATA[
<?php
echo substr(sprintf('%o', fileperms('/tmp')), -4);
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
1777
0644
]]>
</screen>
</example>
<example>
<title>Отображение полных прав доступа</title>
<programlisting role="php">
<![CDATA[
<?php
$perms = fileperms('/etc/passwd');
switch ($perms & 0xF000) {
case 0xC000: // сокет
$info = 's';
break;
case 0xA000: // символическая ссылка
$info = 'l';
break;
case 0x8000: // обычный
$info = 'r';
break;
case 0x6000: // файл блочного устройства
$info = 'b';
break;
case 0x4000: // каталог
$info = 'd';
break;
case 0x2000: // файл символьного устройства
$info = 'c';
break;
case 0x1000: // FIFO канал
$info = 'p';
break;
default: // неизвестный
$info = 'u';
}
// Владелец
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
(($perms & 0x0800) ? 's' : 'x' ) :
(($perms & 0x0800) ? 'S' : '-'));
// Группа
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
(($perms & 0x0400) ? 's' : 'x' ) :
(($perms & 0x0400) ? 'S' : '-'));
// Мир
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
(($perms & 0x0200) ? 't' : 'x' ) :
(($perms & 0x0200) ? 'T' : '-'));
echo $info;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
-rw-r--r--
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
&note.clearstatcache;
&tip.fopen-wrapper.stat;
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>chmod</function></member>
<member><function>is_readable</function></member>
<member><function>stat</function></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
-->