2010-12-08 101 views
5

使用PHP 5.2.14,这是发生了什么PHP的mkdir 0777失败chmod为0777作品

[[email protected] public_html]$ php -r "mkdir('directory', 0777);" 
[[email protected] public_html]$ ls -lt 
drwxrwxr-x 2 rankranger rankranger 4096 Dec 8 17:28 directory 

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

没有找到在PHP的bug列表中的任何相关的错误,任何想法?

+0

什么是你的umask? (mkdir是否使用umask?) – Rup 2010-12-08 17:32:21

回答

5

按照记录工作。 mkdir尊重umask,chmod不尊重。

+0

它可能适用于它,但umask的整个原则通常不是您所期望的。 – 2010-12-08 19:11:27

6

这不是一个错误。见http://php.net/umask - 你可能有0002的umask的创建是什么yourmode & ~umask的许可,所以需要写位为大家远离0777

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

看了这个, http://php.net/manual/en/function.mkdir.php

附加,检查你制作新目录的顶层目录。

例)

PWD /数据/日志

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

/数据/日志必须0777