fileperms
fileperms
(PHP 4, PHP 5, PHP 7)
fileperms - 获取文件权限
描述
int fileperms ( string $filename )
获取给定文件的权限。
参数
filename
文件的路径。
返回值
以数字模式返回文件的权限。该模式的低位与chmod()预期的权限相同,但是在大多数平台上,返回值还将包含有关给定的文件类型的信息filename
。下面的示例演示如何测试POSIX系统(包括Linux和Mac OS X)上特定权限和文件类型的返回值。
对于本地文件,特定的返回值是C库的stat()函数返回的结构的st_mode
成员的返回值。如果需要解析返回值的非允许位,则确切地说哪些位可以随平台而变化,并且建议查找特定平台的文档。
例子
示例#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'
switch ($perms & 0xF000) {
case 0xC000: // socket
$info = 's';
break;
case 0xA000: // symbolic link
$info = 'l';
break;
case 0x8000: // regular
$info = 'r';
break;
case 0x6000: // block special
$info = 'b';
break;
case 0x4000: // directory
$info = 'd';
break;
case 0x2000: // character special
$info = 'c';
break;
case 0x1000: // FIFO pipe
$info = 'p';
break;
default: // 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()系列功能。