This topic created in 2022 days ago, the information mentioned may be changed or developed.
别人的代码出现问题,写入日志因权限被拒绝。原来创建的文件夹没有写入(?!)权限。
记得默认好像没问题,查了代码好像没什么问题,后来定位在 mkdir($dir, 777)上,官方文档是 0777,或者不写也可以,但是 777 是不行的。
我是一头雾水,传值是数值类型的,没加引号,0777 打印出来不是 511 吗?再说为什么 0777 可以得到的是 755,而 777 最后得到的反而是 1411,越看越糊涂了,
请大侠指教!!
6 replies • 2020-12-12 01:45:37 +08:00
 |
|
1
nifury Oct 31, 2020 1
0777 (octal) == 511 (decimal) 777 (decimal) == 1411 (octal)
|
 |
|
2
weirdo Oct 31, 2020
0 开头的数是八进制 0x 开头的数是十六进制 0b 开头的数是二进制 其他情况都是十进制
|
 |
|
3
pinews Oct 31, 2020 1
搜索了一番,自问自答吧,这个参数,显然并不是直接按数字来设置的,当然也不是按字符串设置的。 这个参数 4 个字符,第一个叫特殊权限,可以有 0,1,2,4,4 个数字 1 是粘滞,2,SUID,4,SGID,0 是默认的,没有特殊权限,设置为 777 最后变成 755 的原因是 umask,默认为 022, 而 0777 变成 755,是经过 3 次转换得到的,先变成 10 进制,而内部再转换成 8 进制,最后再用 umask, 既然 0777==511,那最终的效果也是一样的, 省略第一位,用后三位与想要的权限对照是不对的,也就是说 4 位数字不但是直观的,也是准确的,因为内部做了处理,省略第一位是一个简单思维的错误。
|
 |
|
4
pinews Oct 31, 2020
显然并不是直接按“直观数字”来设置的。
|
 |
|
5
happy7902 Nov 1, 2020 via iPhone
外行可能觉得你是个专家,但实际你可能没入门
|