PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

filesize> <fileowner
Last updated: Fri, 01 Jun 2007

view this page in

fileperms

(PHP 4, PHP 5)

fileperms — Gets file permissions

Description

int fileperms ( string $filename )

Returns the permissions on the file, or FALSE in case of an error.

Note: The results of this function are cached. See clearstatcache() for more details.

Tip

As of PHP 5.0.0 this function can also be used with some URL wrappers. Refer to Appendix O, List of Supported Protocols/Wrappers for a listing of which wrappers support stat() family of functionality.

Example 622. Display permissions as an octal value

<?php
echo substr(sprintf('%o', fileperms('/tmp')), -4);
echo
substr(sprintf('%o', fileperms('/etc/passwd')), -4);
?>

This would produce the output:


1777
0644

   

Example 623. Display full permissions

<?php
$perms
= fileperms('/etc/passwd');

if ((
$perms & 0xC000) == 0xC000) {
   
// Socket
   
$info = 's';
} elseif ((
$perms & 0xA000) == 0xA000) {
   
// Symbolic Link
   
$info = 'l';
} elseif ((
$perms & 0x8000) == 0x8000) {
   
// Regular
   
$info = '-';
} elseif ((
$perms & 0x6000) == 0x6000) {
   
// Block special
   
$info = 'b';
} elseif ((
$perms & 0x4000) == 0x4000) {
   
// Directory
   
$info = 'd';
} elseif ((
$perms & 0x2000) == 0x2000) {
   
// Character special
   
$info = 'c';
} elseif ((
$perms & 0x1000) == 0x1000) {
   
// FIFO pipe
   
$info = 'p';
} else {
   
// Unknown
   
$info = 'u';
}

// Owner
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
            ((
$perms & 0x0800) ? 's' : 'x' ) :
            ((
$perms & 0x0800) ? 'S' : '-'));

// Group
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
            ((
$perms & 0x0400) ? 's' : 'x' ) :
            ((
$perms & 0x0400) ? 'S' : '-'));

// World
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
            ((
$perms & 0x0200) ? 't' : 'x' ) :
            ((
$perms & 0x0200) ? 'T' : '-'));

echo
$info;
?>

This would produce the output:


-rw-r--r--

   

See also is_readable(), and stat()



add a note add a note User Contributed Notes
fileperms
paul2712 at gmail dot com
02-Jun-2007 04:08
Do not forget: clearstatcache();
==============================
 
When ever you make a:

mkdir($dstdir, 0770 ))

or a:

chmod($dstdir, 0774 );

You have to call:

clearstatcache();

before you can call:

fileperms($dstdir);
chinello at gmail dot com
25-Apr-2007 04:43
On Linux (not tested on Windows), if you want a chmod-like permissions, you can use this function:

<?php
function file_perms($file, $octal = false)
{
    if(!
file_exists($file)) return false;

   
$perms = fileperms($file);

   
$cut = $octal ? 2 : 3;

    return
substr(decoct($perms), $cut);
}
?>

Using it:

$ touch foo.bar
$ chmod 0754 foo.bar
<?php
echo file_perms('foo.bar'); // prints: 754
echo file_perms('foo.bar', true); // prints 0754
?>

filesize> <fileowner
Last updated: Fri, 01 Jun 2007
 
 
show source | credits | sitemap | contact | advertising | mirror sites