我在 php 脚本中使用 mkdir 在目录 /file/file2/file3
中生成 file3。我使用权限 777,但文件创建后总是看起来像 dr----x--t 2 admin admin 4096 Jul 1 19:26 file3
。我正在运行 Centos 5 64 位。 file2 已经是权限 drwxrwxrwx 16 root root 4096 Jul 1 19:26 file2
。有人知道这是为什么吗?
mkdir("/file1/file2/file3",777);
最佳答案
您想使用 777
八进制, 而不是十进制:
mkdir ("/file1/file2/file3", 0777);
777
十进制结果是 1411
八进制,这将为您提供位掩码 1 100 001 001
这就是您获得这些的原因“奇怪”的权限。标准集(最后三段)为您提供 r----x--x
,第一段将世界权限修改为 t
(粘性位)。
另请记住,mkdir
受制于您的 umask
设置,可能不会为您提供您请求的权限(您的 umask
设置从您要求的权限中“删除”以授予您实际权限)。参见 here了解详细信息,包括如何避免该问题。
您最好使用 mkdir
创建目录,然后使用 chmod
(不会受您的umask<影响
设置)来更改权限。
关于php - mkdir 不遵守权限参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6554134/