首页
学习
活动
专区
工具
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()系列功能。

扫码关注腾讯云开发者

领取腾讯云代金券