mkdir不服从权限参数

时间:2011-07-01 23:30:43

标签: php linux

3 个答案:

答案 0 :(得分:9)

您想使用777 八进制,而不是十进制:

mkdir ("/file1/file2/file3", 0777);

777十进制结果为1411八进制,它将为您提供位掩码1 100 001 001,这就是您获得这些“奇怪”权限的原因。标准集(最后三个段)为您提供r----x--x,第一个段将世界权限修改为t(粘性位)。

另请注意,mkdirumask设置的约束,并且可能无法向您提供您要求的权限(您的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。

Wikipedia: umask

可以找到一点背景知识

答案 2 :(得分:1)

我之前遇到过这个问题,并最终使用。

解决了这个问题
chmod ("/file1/file2/file3",777)

虽然没有解决实际问题......