fileperms
(PHP 4, PHP 5, PHP 7, PHP 8)
fileperms — 取得檔案的許可權
說明
$filename
): int取得檔案的許可權。
參數
-
filename
-
檔案的路徑。
返回值
以數字模式返回檔案的訪問許可權。
Returns the file's permissions as a numeric mode.
Lower bits of this mode
are the same as the permissions expected by chmod(),
however on most platforms the return value will also include information on
the type of file given as filename
. The examples
below demonstrate how to test the return value for specific permissions and
file types on POSIX systems, including Linux and Mac OS X.
For local files, the specific return value is that of the
st_mode
member of the structure returned by the C
library's stat() function. Exactly which bits are set
can vary from platform to platform, and looking up your specific platform's
documentation is recommended if parsing the non-permission bits of the
return value is required.
範例
示例 #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');
if (($perms & 0xC000) == 0xC000) {
// Socket
$info = 's';
} elseif (($perms & 0xA000) == 0xA000) {
// Symbolic Link
$info = 'l';
} elseif (($perms & 0x8000) == 0x8000) {
// Regular
$info = '-';
} elseif (($perms & 0x6000) == 0x6000) {
// Block special
$info = 'b';
} elseif (($perms & 0x4000) == 0x4000) {
// Directory
$info = 'd';
} elseif (($perms & 0x2000) == 0x2000) {
// Character special
$info = 'c';
} elseif (($perms & 0x1000) == 0x1000) {
// FIFO pipe
$info = 'p';
} else {
// 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() 系列函式功能的包裝器列表。