fileperms

(PHP 4, PHP 5)

fileperms — Получить информацию о правах на файл

Описание

int fileperms ( string $filename )

Функция возвращает информацию о правах на указанный файл или FALSE в случае возникновения ошибки.

Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().

Подсказка

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми упаковщиками url. Список упаковщиков, поддерживаемых семейством функций stat(), смотрите в List of Supported Protocols/Wrappers.

Пример #1 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

Пример #2 Display full permissions

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

if ((
$perms 0xC000) == 0xC000) {
    
// Сокет
    
$info 's';
} elseif ((
$perms 0xA000) == 0xA000) {
    
// Символическая ссылка
    
$info 'l';
} elseif ((
$perms 0x8000) == 0x8000) {
    
// Обычный
    
$info '-';
} elseif ((
$perms 0x6000) == 0x6000) {
    
// Специальный блок
    
$info 'b';
} elseif ((
$perms 0x4000) == 0x4000) {
    
// Директория
    
$info 'd';
} elseif ((
$perms 0x2000) == 0x2000) {
    
// Специальный символ
    
$info 'c';
} elseif ((
$perms 0x1000) == 0x1000) {
    
// Поток FIFO
    
$info 'p';
} else {
    
// Неизвестный
    
$info 'u';
}

// Владелец
$info .= (($perms 0x0100) ? 'r' '-');
$info .= (($perms 0x0080) ? 'w' '-');
$info .= (($perms 0x0040) ?
            ((
$perms 0x0800) ? 's' 'x' ) :
            ((
$perms 0x0800) ? 'S' '-'));

// Группа
$info .= (($perms 0x0020) ? 'r' '-');
$info .= (($perms 0x0010) ? 'w' '-');
$info .= (($perms 0x0008) ?
            ((
$perms 0x0400) ? 's' 'x' ) :
            ((
$perms 0x0400) ? 'S' '-'));

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

echo 
$info;
?>

Результат:

-r--r--r--

См.также описания функций is_readable() и stat()

Коментарии

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);
2007-06-02 12:08:03
http://php5.kiev.ua/manual/ru/function.fileperms.html
This may not be immediately apparent to some, but you can use octdec( $octal_value ) to match the permissions retrieved by file perms

<?php

//assumes file has 2770 permissions
$permfileperms__FILE__ ); 
$bit "102770";

printf"%s\n"octdec$bit ) );
printf"%s\n"$perm);

?>
2012-02-29 00:14:13
http://php5.kiev.ua/manual/ru/function.fileperms.html
Don't use substr, use bit operator
<?php
decoct
(fileperms($file) & 0777); // return "755" for example
?>

If you want to compare permission
<?php
0755 
=== (fileperms($file) & 0777);
?>
2013-08-23 18:52:39
http://php5.kiev.ua/manual/ru/function.fileperms.html
Windows has a very different file permission model to Unix and integrates them only minimally.

Here's how Windows calculates the bitmask...

u+w/g+w/o+w is set based on whether the file has the read only flag.

u+r/g+w/o+w is always set.

u+x/g+x/o+x is set based on whether $filename is an inherently executable file (e.g. bat) or a directory.

Windows isn't integrating its ACLs at all.

Here's the source of all this: https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/stat-functions?view=vs-2019 (but it doesn't provide many details)
2020-03-02 21:53:44
http://php5.kiev.ua/manual/ru/function.fileperms.html

    Поддержать сайт на родительском проекте КГБ