PHP mkdir 0777失败chmod 0777工作

meo*_*eow 6 php chmod mkdir

使用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
Run Code Online (Sandbox Code Playgroud)

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

小智 17

$old = umask(0);
mkdir($dir,0777);
umask($old);
Run Code Online (Sandbox Code Playgroud)

阅读本文, http://php.net/manual/en/function.mkdir.php

另外,检查您创建新目录的顶级目录.

例)

pwd/data/log

$dir="/data/log/query";
$old = umask(0); 
mkdir($dir,0777); 
umask($old); 
Run Code Online (Sandbox Code Playgroud)

/ data/log必须为0777.


eta*_*ion 6

这不是一个错误.请参阅http://php.net/umask - 您可能有一个0002的umask.您创建的权限是yourmode & ~umask,所以每个人的写入位都要远离0777.


Tyl*_*ves 5

按文件记录工作.mkdir尊重umask,chmod不尊重.