PHP 文件系统 fileperms() 函数



PHP 文件系统fileperms()函数用于赋予文件或目录权限。此函数成功时返回权限数值,失败时返回 false。

由于此函数返回表示权限的整数,因此直接理解此整数发送给文件的权限格式可能比较困难。如果需要,您可以将其更改为易于人们阅读的格式。

语法

以下是 PHP 文件系统fileperms()函数的语法:

int fileperms ( string $filename )

参数

使用fileperms()函数所需的的参数如下所示:

序号 参数及描述
1

filename(必需)

这是您要检查的文件名。

返回值

它以整数形式返回权限,或在失败时返回 FALSE。

PHP 版本

从 4.0.0 开始,所有版本的 PHP 都支持fileperms()方法。这表明它具有广泛的支持,并且与几乎所有 PHP 配置兼容。

示例

下面的 PHP 代码用于演示 PHP 文件系统fileperms()函数的基本用法。它有助于更易于理解的文件权限验证,主要用于类 Unix 系统。

此处,sprintf() 方法用于将fileperms()生成的整数格式化为八进制数。-4 参数表示使用八进制字符串的最后四个字符。

<?php
   $filePath = "/PhpProject/sample.txt";
   echo substr(sprintf("%o", fileperms($filePath)), -4);
?>

输出

这将产生以下结果:

0666

示例

该程序在验证文件权限后,使用fileperms()函数将文件类型和权限更改为人类可读的文本。

<?php
   $perms = fileperms("/PhpProject/sample.txt");

   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' : '-'));

   echo $info;
?>

输出

这将生成以下结果:

rrw-rw-

示例

下面的 PHP 示例用于检查文件的权限,并显示其是否可读、可写或可执行。

<?php

   // Define the file path 
   $file = "/PhpProject/myfile.txt";

   // Get file permissions
   $perms = fileperms($file);
   
   // Check if file is readable
   if ($perms & 0x0100) {
      echo "$file is readable.<br>";
   } else {
      echo "$file is not readable.<br>";
   }
   
   // Check if file is writable
   if ($perms & 0x0080) {
      echo "$file is writable.<br>";
   } else {
      echo "$file is not writable.<br>";
   }
   
   // Check if file is executable
   if ($perms & 0x0040) {
      echo "$file is executable.<br>";
   } else {
      echo "$file is not executable.<br>";
   }
?> 

输出

这将创建以下结果:

/PhpProject/myfile.txt is not readable.
/PhpProject/myfile.txt is not writable.
/PhpProject/myfile.txt is not executable.

示例

下面的 PHP 代码向我们展示了如何使用fileperms()函数更改文件的权限。chmod()函数用于将文件的权限更改为新的权限。

<?php

// Define the file path 
$file = "/PhpProject/myfile.txt";

// Get the current permissions of the file
$perms = fileperms($file);

// Define new permissions (e.g., read and write for owner, read for group and others)
$new_perms = 0644;

// Change the permissions of the file
if (chmod($file, $new_perms)) {
    echo "Permissions of $file changed successfully.<br>";
} else {
    echo "Failed to change permissions of $file.<br>";
}
?> 

输出

这将导致以下结果:

Permissions of /PhpProject/myfile.txt changed successfully.

注意

使用fileperms()函数,权限以八进制表示法显示,如果需要,可以将其转换为人类可读的格式。

总结

fileperms()可用于获取文件或目录的权限。权限由以八进制表示法返回的整数表示。通过读取返回的整数,您可以识别文件类型以及所有者、组和其他用户的读、写和执行权限。

php_function_reference.htm
广告