PHP中fileperms函数的返回值为十进制还是八进制?
PHP fileperms 函数返回值详解
- fileperms 始终返回十进制整数,不会直接返回八进制值,你看到的八进制是十进制转换后的结果。
- 你得到的
16895转八进制为40777,其中4是文件类型标识(代表这是一个目录),后面的0777才是你设置的权限位。fileperms返回的是完整的文件状态掩码,包含文件类型和权限信息,不是单纯的权限数值。 - 如果你需要得到可读的八进制权限格式,必须用
sprintf或类似函数转换,示例代码:
$dir = './test'; mkdir($dir, 0777); $permValue = fileperms($dir); // 输出完整的八进制掩码(含文件类型) echo sprintf('%o', $permValue); // 输出 40777 // 仅提取权限位部分 echo substr(sprintf('%o', $permValue), -4); // 输出 0777
- 额外注意:系统的
umask会修改实际生效的权限。比如默认umask为0022时,即使你用mkdir($dir, 0777),实际创建的目录权限会是0755,对应fileperms返回的十进制转八进制为40755。
内容的提问来源于stack exchange,提问作者Ahmad Ahmad
相关产品推荐
相关产品推荐

