86
12
blocks
Number of block allocated to this file
The mode element of the returned array contains the permissions expressed as a base 10
integer. This is confusing since permissions are usually either expressed symbolically (e.g., ls's
-rw-r--r--
output) or as an octal integer (e.g.,
0644
). To convert the permissions to a
more understandable format, use
base_convert( )
to change the permissions to
octal:
$file_info = stat('/tmp/session.txt');
$permissions = base_convert($file_info['mode'],10,8);
This results in a six-digit octal number. For example, if ls displays the following about
/tmp/session.txt:
-rw-rw-r-- 1 sklar sklar 12 Oct 23 17:55 /tmp/session.txt
Then
$file_info['mode']
is
33204
and
$permissions
is
100664
. The
last three digits (
664
) are the user (read and write), group (read and write), and other
(read) permissions for the file. The third digit,
0
, means that the file is not setuid or setgid.
The leftmost
10
means that the file is a regular file (and not a socket, symbolic link, or other
special file).
Because
stat( )
returns an array with both numeric and string indexes, using
foreach
to iterate through the returned array produces two copies of each value. Instead,
use a
for
loop from element 0 to element 12 of the returned array.
Calling
stat( )
on a symbolic link returns information about the file the symbolic link
points to. To get information about the symbolic link itself, use
lstat( )
.
Similar to
stat( )
is
fstat( )
, which takes a file handle (returned from
fopen(
)
or
popen( )
) as an argument. You can use
fstat( )
only on local files, however,
not URLs passed to
fopen( )
.
PHP's
stat( )
function uses the underlying stat(2) system call, which is expensive. To
minimize overhead, PHP caches the result of calling stat(2). So, if you call
stat( )
on a
file, change its permissions, and call
stat( )
on the same file again, you get the same
results. To force PHP to reload the file's metadata, call
clearstatcache( )
, which
flushes PHP's cached information. PHP also uses this cache for the other functions that return
file metadata:
file_exists( )
,
fileatime( )
,
filectime( )
,