php用fileperms获取权限再改_php取当前权限修改法【步骤】-php教程

fileperms返回的是十进制整数,但高位包含文件类型标志(如100表示普通文件),需用fileperms($path) & 0777提取纯权限值(如420对应0644),再进行位运算或chmod操作。

fileperms 返回的是十进制还是八进制?

fileperms 返回的是一个十进制整数,但它**代表的是底层 stat 结构中的 mode 字段**,包含文件类型(如 S_IFDIR、S_IFREG)和权限位(如 S_IRUSR)。它不是你 ls -l 看到的三位八进制数(如 0755),也不能直接用 decoct() 转成“习惯上的权限字符串”就完事——因为高位还混着文件类型标志。

常见错误:直接 echo decoct(fileperms('test.txt')) → 得到类似 100644,开头的 100 是文件类型(普通文件),后面 644 才是权限。不剥离类型位,后续按位操作会出错。

  • 正确做法:用位与 & 清除文件类型位,只保留权限部分:fileperms($path) & 0777
  • 这样得到的就是纯权限值(如 420 对应 0644),可安全用于 chmod 或比较
  • 若要格式化显示为三位八进制字符串:sprintf('%03o', fileperms($path) & 0777)

如何安全地“取当前权限 + 修改某几位”?

直接读取再加减权限(比如 + 0004)极易出错——权限位是位掩码,不是算术值。必须用位运算:保留原权限,再用 | 设置位、& ~ 清除位。

例如:给文件加上“组可执行”,但不改动其他任何权限:

立即学习“PHP免费学习笔记(深入)”;

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » php用fileperms获取权限再改_php取当前权限修改法【步骤】-php教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1394+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4043116+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1394+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4043116+
  • 本周更新: 0+
  • 最后更新: 2026-03-16