- PHP 教程
- PHP - 首页
- PHP - 路线图
- PHP - 简介
- PHP - 安装
- PHP - 历史
- PHP - 特性
- PHP - 语法
- PHP - Hello World
- PHP - 注释
- PHP - 变量
- PHP - Echo/Print
- PHP - var_dump
- PHP - $ 和 $$ 变量
- PHP - 常量
- PHP - 魔术常量
- PHP - 数据类型
- PHP - 类型转换
- PHP - 类型混淆
- PHP - 字符串
- PHP - 布尔值
- PHP - 整数
- PHP - 文件与 I/O
- PHP - 数学函数
- PHP - Heredoc 和 Nowdoc
- PHP - 复合类型
- PHP - 文件包含
- PHP - 日期和时间
- PHP - 标量类型声明
- PHP - 返回类型声明
- PHP 运算符
- PHP - 运算符
- PHP - 算术运算符
- PHP - 比较运算符
- PHP - 逻辑运算符
- PHP - 赋值运算符
- PHP - 字符串运算符
- PHP - 数组运算符
- PHP - 条件运算符
- PHP - 展开运算符
- PHP - 空值合并运算符
- PHP - 键值比较运算符
- PHP 控制语句
- PHP - 决策制定
- PHP - If…Else 语句
- PHP - Switch 语句
- PHP - 循环类型
- PHP - For 循环
- PHP - Foreach 循环
- PHP - While 循环
- PHP - Do…While 循环
- PHP - Break 语句
- PHP - Continue 语句
- PHP 函数
- PHP - 函数
- PHP - 函数参数
- PHP - 按值传递
- PHP - 按引用传递
- PHP - 默认参数
- PHP - 具名参数
- PHP - 可变参数
- PHP - 返回值
- PHP - 传递函数
- PHP - 递归函数
- PHP - 类型提示
- PHP - 变量作用域
- PHP - 严格类型
- PHP - 匿名函数
- PHP - 箭头函数
- PHP - 可变函数
- PHP - 局部变量
- PHP - 全局变量
- PHP 超全局变量
- PHP - 超全局变量
- PHP - $GLOBALS
- PHP - $_SERVER
- PHP - $_REQUEST
- PHP - $_POST
- PHP - $_GET
- PHP - $_FILES
- PHP - $_ENV
- PHP - $_COOKIE
- PHP - $_SESSION
- PHP 文件处理
- PHP - 文件处理
- PHP - 打开文件
- PHP - 读取文件
- PHP - 写入文件
- PHP - 文件是否存在
- PHP - 下载文件
- PHP - 复制文件
- PHP - 追加文件
- PHP - 删除文件
- PHP - 处理 CSV 文件
- PHP - 文件权限
- PHP - 创建目录
- PHP - 列出文件
- 面向对象 PHP
- PHP - 面向对象编程
- PHP - 类和对象
- PHP - 构造函数和析构函数
- PHP - 访问修饰符
- PHP - 继承
- PHP - 类常量
- PHP - 抽象类
- PHP - 接口
- PHP - 特性
- PHP - 静态方法
- PHP - 静态属性
- PHP - 命名空间
- PHP - 对象迭代
- PHP - 封装
- PHP - Final 关键字
- PHP - 重载
- PHP - 克隆对象
- PHP - 匿名类
- PHP Web 开发
- PHP - Web 概念
- PHP - 表单处理
- PHP - 表单验证
- PHP - 表单邮件/URL
- PHP - 完整表单
- PHP - 文件包含
- PHP - GET 和 POST
- PHP - 文件上传
- PHP - Cookie
- PHP - Session
- PHP - Session 选项
- PHP - 发送邮件
- PHP - 过滤输入
- PHP - Post-Redirect-Get (PRG)
- PHP - 闪存消息
- PHP 高级
- PHP - MySQL
- PHP.INI 文件配置
- PHP - 数组解构
- PHP - 编码规范
- PHP - 正则表达式
- PHP - 错误处理
- PHP - Try…Catch
- PHP - Bug 调试
- PHP - 针对 C 开发人员
- PHP - 针对 PERL 开发人员
- PHP - 框架
- PHP - Core PHP 与框架
- PHP - 设计模式
- PHP - 过滤器
- PHP - JSON
- PHP - 异常
- PHP - 特殊类型
- PHP - 哈希
- PHP - 加密
- PHP - is_null() 函数
- PHP - 系统调用
- PHP - HTTP 认证
- PHP - 交换变量
- PHP - Closure::call()
- PHP - 过滤后的 unserialize()
- PHP - IntlChar
- PHP - CSPRNG
- PHP - 期望
- PHP - Use 语句
- PHP - 整数除法
- PHP - 已弃用的特性
- PHP - 已移除的扩展和 SAPI
- PHP - PEAR
- PHP - CSRF
- PHP - FastCGI 进程
- PHP - PDO 扩展
- PHP - 内置函数
- PHP 有用资源
- PHP - 速查表
- PHP - 问答
- PHP - 快速指南
- PHP - 在线编译器
- PHP - 有用资源
- PHP - 讨论
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应用程序中的目录和文件是否安全并具有正确的权限。