PHP
文件系统 | File System

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()系列功能。