PHP mkdir 0777 失败,chmod 0777 成功。

7
使用 PHP 5.2.14,会发生以下情况:
[user@VE213 public_html]$ php -r "mkdir('directory', 0777);"
[user@VE213 public_html]$ ls -lt
drwxrwxr-x  2 rankranger rankranger 4096 Dec  8 17:28 directory

[user@VE213 public_html]$ php -r "chmod('directory', 0777);"
[user@VE213 public_html]$ ls -lt
drwxrwxrwx  2 rankranger rankranger 4096 Dec  8 17:28 directory

在php bug列表中没有发现任何相关的错误,有什么想法吗?


你的umask是多少?(mkdir使用umask吗?) - Rup
3个回答

19
$old = umask(0);
mkdir($dir,0777);
umask($old);

请阅读:http://php.net/manual/zh/function.mkdir.php

此外,检查您创建的新目录的顶级目录。

例如:

pwd /data/log

$dir="/data/log/query";
$old = umask(0); 
mkdir($dir,0777); 
umask($old); 

/data/log 的权限必须是 0777。


6
这不是一个bug。请查看http://php.net/umask - 你可能有一个0002的umask。你所创建的权限是yourmode & ~umask,因此它从0777中取走了每个人的写入位。

5

按照文档工作。mkdir遵守umask,chmod则不然。


它可能按照预期工作,但umask的整个原则通常不是您所期望的。 - Bjarke Freund-Hansen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接