0

在我的代码中

$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(目录)上传项目。

我该怎么做?

4

2 回答 2

4

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

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

...

于 2012-01-06T10:23:39.080 回答
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);
于 2011-12-11T03:50:35.130 回答