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()系列功能。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com