在我的代码中
$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(目录)上传项目。
我该怎么办?
答案 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);