在我的代码中
$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(目录)上传项目。
我该怎么做?
在我的代码中
$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 权限或任何权限的目录
$path = 'images/product/'.$pid;
if( ! file_exists($path)) {
$mask=umask(0);
mkdir($path, 0777);
umask($mask);
}
...
这是因为默认情况下,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);