-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathfileperms.xml
191 lines (176 loc) · 4.83 KB
/
fileperms.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 9cc4767b2ddf65c4ed592c9deb818cbb2c9def7b Maintainer: seros Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.fileperms">
<refnamediv>
<refname>fileperms</refname>
<refpurpose>Obtiene los permisos de un fichero</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</type><methodname>fileperms</methodname>
<methodparam><type>string</type><parameter>filename</parameter></methodparam>
</methodsynopsis>
<para>
Obtiene los permisos de un fichero dado.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>filename</parameter></term>
<listitem>
<para>
Ruta del fichero.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Devuelve los permisos de un fichero como un modo numérico del mismo formato
en el que se espera por <function>chmod</function>, sin embargo en la mayoría de
plataformas el valor de retorno también incluirá información sobre el tipo de fichero
dado como <parameter>filename</parameter>. Los siguientes ejemplos muestran como poner
a prueba el valor de retorno para los permisos específicos y tipos de ficheros en sistemas
POSIX, incluyendo Linux y macOS.
</para>
<para>
Para los ficheros locales, el valor de retorno específico es el del miembro
<literal>st_mode</literal> de la estructura devuelta por la función
<function>stat</function> de la biblioteca de C. Exactamente lo que los bits
que están establecidos pueden variar de una plataforma a otra, y mirando la
documentación de su plataforma específica se recomienda si el análisis de
los bits sin permiso del valor de retorno es necesario.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Muestra los permisos como un valor octal</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>Muestra los permisos completos</title>
<programlisting role="php">
<![CDATA[
<?php
$permisos = fileperms('/etc/passwd');
switch ($perms & 0xF000) {
case 0xC000: // Socket
$info = 's';
break;
case 0xA000: // Enlace simbólico
$info = 'l';
break;
case 0x8000: // Normal
$info = 'r';
break;
case 0x6000: // Bloque especial
$info = 'b';
break;
case 0x4000: // Directorio
$info = 'd';
break;
case 0x2000: // Carácter especial
$info = 'c';
break;
case 0x1000: // Tubería FIFO pipe
$info = 'p';
break;
default: // Desconocido
$info = 'u';
}
// Propietario
$info .= (($permisos & 0x0100) ? 'r' : '-');
$info .= (($permisos & 0x0080) ? 'w' : '-');
$info .= (($permisos & 0x0040) ?
(($permisos & 0x0800) ? 's' : 'x' ) :
(($permisos & 0x0800) ? 'S' : '-'));
// Grupo
$info .= (($permisos & 0x0020) ? 'r' : '-');
$info .= (($permisos & 0x0010) ? 'w' : '-');
$info .= (($permisos & 0x0008) ?
(($permisos & 0x0400) ? 's' : 'x' ) :
(($permisos & 0x0400) ? 'S' : '-'));
// Mundo
$info .= (($permisos & 0x0004) ? 'r' : '-');
$info .= (($permisos & 0x0002) ? 'w' : '-');
$info .= (($permisos & 0x0001) ?
(($permisos & 0x0200) ? 't' : 'x' ) :
(($permisos & 0x0200) ? 'T' : '-'));
echo $info;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
-rw-r--r--
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
&fs.emits.warning.on.failure;
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
¬e.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
-->