PHP 文件系统 chmod() 函数



PHP 文件系统 chmod() 函数可以更改指定文件的权限。顾名思义,更改模式意味着它试图更改指定文件的模式。成功时返回 true,否则返回 false。

要点

  • 模式不会自动假定为八进制值,因此字符串(例如“g+w”)无法正常工作。为了确保预期的操作,我们需要在模式前加上零 (0)。
  • 参数“mode”由三个八进制数字组成:文件所有者、所有者所属的用户组以及其他所有人的访问限制,按此顺序。
  • 数字 1 表示我们授予执行权限,数字 2 表示我们使文件可写,数字 4 表示我们使文件可读。我们可以将这些数字加起来以指定所需的权限。

语法

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

bool chmod ( string filename, int permissions )

参数

以下是 chmod() 函数的必填和可选参数:

序号 参数及描述
1

filename(必填)

文件的路径。

2

permissions(必填)

您想要更改的权限。权限可以通过两种方式给出:八进制表示法和符号表示法。

返回值

成功时返回 TRUE 值,失败时返回 FALSE。

权限表示

权限可以通过两种方式给出:

  • 八进制表示法
  • 符号权限

八进制表示法

八进制表示法是表示 Unix 权限的一种方式。它基本上由三个数字组成,例如 777 或 775。其中 - 所有者是第一个数字,组是第二个,其他用户是第三个。

使用 0 到 7 的数字,这个八进制数系统如下:

  • 0 表示“无”权限,
  • 1 表示“执行”权限,
  • 2 表示“写入”权限,
  • 4 表示“读取”权限,

要为用户类提供权限,请将上面的数字加起来。例如,将 4+1 = 5 加起来,以仅授予用户组“读取”和“执行”权限。让我们看看下面的示例:

  • 0 (0+0+0) 表示“无”权限。
  • 1 (0+0+1) 表示“执行”权限。
  • 2 (0+2+0) 表示“写入”权限。
  • 3 (0+2+1) 表示“写入”和“执行”权限。
  • 4 (4+0+0) 表示“读取”权限。
  • 5 (4+0+1) 表示“读取”和“执行”权限。
  • 6 (4+2+0) 表示“读取”和“写入”权限。
  • 7 (4+2+1) 表示“读取”、“写入”和“执行”权限。

一些八进制表示法权限如下:

  • 775:这为所有者和组提供读取、写入和执行权限,并为其他用户提供读取和执行权限。
  • 700:这为所有者提供读取、写入和执行权限,同时拒绝其他用户和组访问。

符号权限

在符号权限方法中,权限表示如下:

  • r:读取权限,
  • w:写入权限,
  • e:执行权限。

用户类进一步表示为:

  • u:文件或文件夹的所有者(用户)。
  • g:具有相同权限的组。
  • o:所有其他用户(除所有者和组之外)。
  • a:它包含所有(u、g 和 o)。

我们使用以下操作为用户类提供上述权限:

  • +:添加访问权限,
  • -:移除访问权限,
  • =:设置精确的访问权限。

PHP 版本

chmod() 函数最初作为核心 PHP 4 的一部分引入,并且与 PHP 5、PHP 7、PHP 8 兼容。

示例

在下面的代码中,我们使用了 PHP 文件系统 chmod() 函数来设置权限 0600,它为所有者提供读取和写入权限,而其他所有人则不提供任何权限。

<?php
   // File path
   $file = '/Applications/XAMPP/xamppfiles/htdocs/mac/myfile1.txt';

   // Owner can read and write, others have no permissions
   $permissions = 0600; 

   if (chmod($file, $permissions)) {
      echo "Permissions has changed successfully for myfile1.txt.";
   } else {
      echo "Failed to change permissions for myfile1.txt.";
   }
?>

输出

这将产生以下结果:

  • 如果权限被授予。

    Permissions has changed successfully for myfile1.txt.
    
  • 如果权限被拒绝。

    Failed to change permissions for myfile1.txt.
    

示例

在给定的示例中,我们将使用chmod()函数设置权限0644,这将为所有者提供读写权限,为其他人提供只读权限。

<?php
   // File path
   $file = '/Applications/XAMPP/xamppfiles/htdocs/mac/myfile2.txt';

   // read and write for owner and read-only for others
   $permissions = 0644; 

   if (chmod($file, $permissions)) {
      echo "Permissions has changed successfully for myfile2.txt.";
   } else {
      echo "Failed to change permissions for myfile2.txt.";
   }
?>

输出

这将生成以下输出:

  • 如果权限被授予。

    Permissions has changed successfully for myfile2.txt.
    
  • 如果权限被拒绝。

    Failed to change permissions for myfile2.txt.
    

示例

在下面的示例中,我们使用了chmod()函数来设置权限0755,这将为所有者提供所有权限,为其他人提供读和执行权限。因为在某些情况下,所有者需要向其他人提供读和执行权限。

<?php
   // File path
   $file = '/Applications/XAMPP/xamppfiles/htdocs/mac/myfile3.txt';

   // everything for the owner and read and execute for others
   $permissions = 0755; 

   if (chmod($file, $permissions)) {
      echo "Permissions has changed successfully for myfile3.txt.";
   } else {
      echo "Failed to change permissions for myfile3.txt.";
   }
?>

输出

这将产生以下结果:

  • 如果权限被授予。

    Permissions has changed successfully for myfile3.txt.
    
  • 如果权限被拒绝。

    Failed to change permissions for myfile3.txt.
    

示例

在下面的示例中,我们使用了chmod()函数来设置权限0740,这将为所有者提供所有权限,为所有者组提供读权限,并且其他人没有权限。

<?php
   // File path
   $file = '/Applications/XAMPP/xamppfiles/htdocs/mac/myfile4.txt';

   // everything for owner, read for owner's group, and no permissions for others
   $permissions = 0740; 

   if (chmod($file, $permissions)) {
      echo "Permissions has changed successfully for myfile4.txt.";
   } else {
      echo "Failed to change permissions for myfile4.txt.";
   }
?>

输出

此PHP代码的结果为:

  • 如果权限被授予。

    Permissions has changed successfully for myfile4.txt.
    
  • 如果权限被拒绝。

    Failed to change permissions for myfile4.txt.
    

注意

如果出现问题,该函数可能会也可能无法修改文件或文件夹的权限。因此,请使用条件语句来确保代码的成功并保持其安全。

总结

内置的PHP文件系统函数chmod()检查Web应用程序中的目录和文件是否安全并具有正确的权限。

php_function_reference.htm
广告