【问题标题】:php create new dir with 777 permission. How?php 创建具有 777 权限的新目录。如何?
【发布时间】:2012-01-17 09:59:54
【问题描述】:

在我的代码中

$path = 'images/product/'.$pid;
if( ! file_exists($path)) {
    mkdir($path, 0777);
}
...
...

但是当我输入时

ls -l

在终端中

drwxr-xr-x 2 www-data www-data 4.0K 2011-12-10 19:28 1/

这是我得到的许可,但不是我想要的。

我希望允许网络用户根据运行时创建的产品 ID(目录)上传项目。

我该怎么做?

【问题讨论】:

  • 你真的需要777吗? 真的?最好由用户和组应用所有权以允许框上的其他用户/组写入该目录。如果您使用 777 以便 Apache 可以写入该目录,那么就没有必要了,它已经归 www-data 所有,任何通过 PHP/Apache 上传文件的人都将拥有写入权限。
  • 我认为没有必要需要777。感谢您的建议。

标签: php linux file-upload file-permissions 777


【解决方案1】:

这是因为默认情况下 Apache umask 设置为 0022。

因为umask是为了撤销权限。示例

default 0777 rwx.rwx.rwx 
umask   0022 ---.-w-.-w-
Final   0755 rwx.r-x.r-x

有两种方法可以解决这个问题,

1. Edit /etc/apache2/envvars
   add in **umask** *<permission to be revoke>*
   restart apache
2. add in umask(0000); before the mkdir('mydir', 0777);

【讨论】:

    【解决方案2】:

    用于创建具有 777 权限或任何权限的目录

    $path = 'images/product/'.$pid;
    if( ! file_exists($path)) {
        $mask=umask(0);
        mkdir($path, 0777);
        umask($mask);
    }
    

    ...

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 2011-04-29
      • 2018-09-07
      • 2017-06-12
      相关资源
      最近更新 更多