首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

fileperms

(PHP 4, PHP 5, PHP 7)

fileperms - 获取文件权限

描述

代码语言:javascript
复制
int fileperms ( string $filename )

获取给定文件的权限。

参数

filename

文件的路径。

返回值

以数字模式返回文件的权限。该模式的低位与chmod()预期的权限相同,但是在大多数平台上,返回值还将包含有关给定的文件类型的信息filename。下面的示例演示如何测试POSIX系统(包括Linux和Mac OS X)上特定权限和文件类型的返回值。

对于本地文件,特定的返回值是C库的stat()函数返回的结构的st_mode成员的返回值。如果需要解析返回值的非允许位,则确切地说哪些位可以随平台而变化,并且建议查找特定平台的文档。

例子

示例#1将权限显示为八进制值

代码语言:javascript
复制
<?php
echo?substr(sprintf('%o',?fileperms('/tmp')),?-4);
echo?substr(sprintf('%o',?fileperms('/etc/passwd')),?-4);
?>

上面的例子将输出:

代码语言:javascript
复制
1777
0644

示例#2显示完整权限

代码语言:javascript
复制
<?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;
?>

上面的例子将输出:

代码语言:javascript
复制
-rw-r--r--

错误/异常

发生故障时,E_WARNING发射。

注意

注意:这个函数的结果被缓存。有关更多详细信息,请参阅clearstatcache()。

提示

从PHP 5.0.0开始,这个函数也可以用于一些 URL包装器。请参阅支持的协议和包装以确定哪些包装支持stat()系列功能。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com