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

search for in the

filesize> <fileowner
Last updated: Fri, 14 Aug 2009

view this page in

fileperms

(PHP 4, PHP 5)

filepermsLit les droits d'un fichier

Description

int fileperms ( string $filename )

Lit les droits du fichier donné.

Liste de paramètres

filename

Chemin vers le fichier.

Valeurs de retour

Retourne les droits du fichier, ou FALSE si une erreur survient.

Exemples

Exemple #1 Affichage des droits en valeur octale

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

L'exemple ci-dessus va afficher :

1777
0644

Exemple #2 Affichage de tous les droits

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

if ((
$perms 0xC000) == 0xC000) {
    
// Socket
    
$info 's';
} elseif ((
$perms 0xA000) == 0xA000) {
    
// Lien symbolique
    
$info 'l';
} elseif ((
$perms 0x8000) == 0x8000) {
    
// Régulier
    
$info '-';
} elseif ((
$perms 0x6000) == 0x6000) {
    
// Block special
    
$info 'b';
} elseif ((
$perms 0x4000) == 0x4000) {
    
// Dossier
    
$info 'd';
} elseif ((
$perms 0x2000) == 0x2000) {
    
// Caractère spécial
    
$info 'c';
} elseif ((
$perms 0x1000) == 0x1000) {
    
// pipe FIFO
    
$info 'p';
} else {
    
// Inconnu
    
$info 'u';
}

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

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

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

echo 
$info;
?>

L'exemple ci-dessus va afficher :

-rw-r--r--

Notes

Note: Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache() pour plus de détails.

Astuce

Depuis PHP 5.0.0, cette fonction peut aussi être utilisée avec quelques protocoles url. Lisez Liste des protocoles supportés pour une liste des protocoles supportant la famille de fonctionnalités de stat().

Voir aussi

  • chmod() - Change le mode du fichier
  • is_readable() - Indique si un fichier est accessible en lecture
  • stat() - Renvoie les informations à propos d'un fichier



filesize> <fileowner
Last updated: Fri, 14 Aug 2009
 
add a note add a note User Contributed Notes
fileperms
jchris dot fillionr at kitware dot com
02-Apr-2009 12:11
Since the output of decoct( fileperms('.') ) is of the form: 40644

It seems the previous example is wrong, instead you should understand:

To get permissions formatted as "644":
<?php
echo substr(decoct( fileperms('.') ), 2);
?>

To get permissions formatted  as "0644":
<?php
echo substr(decoct( fileperms('.') ), 1);
?>
MartinAngermeier at gmx dot net
29-Oct-2008 09:37
An easy way to calculate fileperms to chmod is this:

substr(decoct(fileperms("test.html")),3);

Displays 666 or 777 (depends on chmod set).

substr(decoct(fileperms("test.html")),2);

Displays 0666 or 0777 and refers immediately to the number set with chmod();
eelco
10-Jul-2007 11:21
If you only want the permissions (lowest three octal numbers) you can use a bitwise AND to mask the bits:

<?php
fileperms
($file) & 511;
?>
paul2712 at gmail dot com
02-Jun-2007 06: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 06: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, 14 Aug 2009
 
 
show source | credits | sitemap | contact | advertising | mirror sites