【问题标题】:PHP mkdir 0777 fail chmod 0777 worksPHP mkdir 0777 失败 chmod 0777 工作
【发布时间】:2011-05-22 09:12:40
【问题描述】:

使用 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列表中没有找到任何相关的bug,有什么想法吗?

【问题讨论】:

  • 你的umask是什么? (mkdir 使用 umask 吗?)

标签: php chmod mkdir


【解决方案1】:
$old = umask(0);
mkdir($dir,0777);
umask($old);

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

附加,检查您创建新目录的顶级目录。

示例)

密码 /数据/日志

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

/data/log 必须是 0777。

【讨论】:

    【解决方案2】:

    这不是错误。请参阅http://php.net/umask - 你可能有一个 0002 的 umask。你创建的权限是 yourmode & ~umask,因此它会将每个人的写入位从 0777 中取出。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 它可能会按预期工作,但 umask 的整个原理通常不是你所期望的。
      猜你喜欢
      • 2019-08-04
      • 2012-05-31
      • 2011-09-20
      • 2014-09-29
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多