Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Filesystem Functions : fileperms

fileperms

Gets file permissions (PHP 4, PHP 5)
int fileperms ( string filename )

Example 634. Display permissions as an octal value

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

The above example will output:

1777
0644

Example 635. 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;
?>

The above example will output:

-rw-r--r--

Related Examples ( Source code ) » fileperms


Code Examples / Notes » fileperms

chinello

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
?>


eelco

If you only want the permissions (lowest three octal numbers) you can use a bitwise AND to mask the bits:
<?php
fileperms($file) & 511;
?>


asakurastar

If you need a function to return perms in format like (rwx etc)
You can you use this code:
function GetFilePerms($file) {
   $perms = fileperms($file);
   if (($perms & 0xC000) == 0xC000) {$info = 's'; } // Socket
   elseif (($perms & 0xA000) == 0xA000) {$info = 'l'; } // Symbolic Link
   elseif (($perms & 0x8000) == 0x8000) {$info = '-'; } // Regular
   elseif (($perms & 0x6000) == 0x6000) {$info = 'b'; } // Block special
   elseif (($perms & 0x4000) == 0x4000) {$info = 'd'; } // Directory
   elseif (($perms & 0x2000) == 0x2000) {$info = 'c'; } // Character special
   elseif (($perms & 0x1000) == 0x1000) {$info = 'p'; } // FIFO pipe
   else {$info = '?';} // Unknown
   // 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' : '-'));
 return $info;
}
//Usage mode:
//echo GetFilePerms("path/to/your/file");


paul2712

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);


Change Language


Follow Navioo On Twitter
basename
chgrp
chmod
chown
clearstatcache
copy
delete
dirname
disk_free_space
disk_total_space
diskfreespace
fclose
feof
fflush
fgetc
fgetcsv
fgets
fgetss
file_exists
file_get_contents
file_put_contents
file
fileatime
filectime
filegroup
fileinode
filemtime
fileowner
fileperms
filesize
filetype
flock
fnmatch
fopen
fpassthru
fputcsv
fputs
fread
fscanf
fseek
fstat
ftell
ftruncate
fwrite
glob
is_dir
is_executable
is_file
is_link
is_readable
is_uploaded_file
is_writable
is_writeable
lchgrp
lchown
link
linkinfo
lstat
mkdir
move_uploaded_file
parse_ini_file
pathinfo
pclose
popen
readfile
readlink
realpath
rename
rewind
rmdir
set_file_buffer
stat
symlink
tempnam
tmpfile
touch
umask
unlink
eXTReMe Tracker