fileperms 取得文件的权限

发表日期:2021-07-01 08:55:42 | 来源: | | 浏览(817) 分类:文件系统函数

fileperms

(PHP 4, PHP 5, PHP 7, PHP 8)

fileperms取得文件的权限

说明

fileperms(string $filename): int

取得文件的权限。

参数


  • filename

  • 文件的路径。


返回值

以数字模式返回文件的访问权限。   Returns the file's permissions as a numeric mode.     Lower bits of this mode   are the same as the permissions expected by chmod(),   however on most platforms the return value will also include information on   the type of file given as filename. The examples   below demonstrate how to test the return value for specific permissions and   file types on POSIX systems, including Linux and Mac OS X.

For local files, the specific return value is that of the   st_mode member of the structure returned by the C   library's stat() function. Exactly which bits are set   can vary from platform to platform, and looking up your specific platform's   documentation is recommended if parsing the non-permission bits of the   return value is required.

范例


示例 #1 以八进制的形式显示文件的权限

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

以上例程会输出:

1777
0644

示例 #2 输出全部权限

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

以上例程会输出:

-rw-r--r--


错误/异常

失败时抛出E_WARNING警告。

注释

注意: 此函数的结果会被缓存。参见clearstatcache() 以获得更多细节。

小技巧

自 PHP 5.0.0 起, 此函数也用于某些URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见



集速网 copyRight © 2015-2022 宁ICP备15000399号-1 宁公网安备 64010402001209号
与其临渊羡鱼,不如退而结网
欢迎转载、分享、引用、推荐、收藏。