php以777权限创建新的目录。怎么样?

时间:2011-12-10 13:35:22

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

在我的代码中

$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/

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

我想允许Web用户根据在运行时创建的产品ID(目录)上传项目。

我该怎么办?

2 个答案:

答案 0 :(得分:3)

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

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

...

答案 1 :(得分: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);