答案 0 :(得分:9)
您想使用777
八进制,而不是十进制:
mkdir ("/file1/file2/file3", 0777);
777
十进制结果为1411
八进制,它将为您提供位掩码1 100 001 001
,这就是您获得这些“奇怪”权限的原因。标准集(最后三个段)为您提供r----x--x
,第一个段将世界权限修改为t
(粘性位)。
另请注意,mkdir
受umask
设置的约束,并且可能无法向您提供您要求的权限(您的umask
设置会从您要求的权限中“删除”为了给你实际的权限)。有关详细信息,请参阅here,包括如何避免此问题。
最好使用mkdir
创建目录,然后chmod
(不受<{1}}设置影响)更改权限
答案 1 :(得分:3)
mkdir()
也会受到当前umask()
的影响,请参阅示例#1
$old = umask(0);
chmod("/path/some_dir/some_file.txt", 0755);
umask($old);
另请查看说明
可以找到一点背景知识注意:强>
避免在多线程Web服务器中使用此功能。最好在创建文件后使用chmod()更改文件权限。使用umask()可能会导致并发运行脚本和Web服务器本身的意外行为,因为它们都使用相同的umask。
答案 2 :(得分:1)
我之前遇到过这个问题,并最终使用。
解决了这个问题chmod ("/file1/file2/file3",777)
虽然没有解决实际问题......