php中mkdir()函数的权限问题分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中mkdir()函数的权限问题分析相关的知识,希望对你有一定的参考价值。

参考技术A 问题描述:
使用以下php代码创建了一个目录,期望目录的权限是0777,实际结果是0755
mkdir('./aa/',0777);
分析与测试结果:
1.mkdir()函数指定的目录权限只能小于等于系统umask设定的默认权限。
如linux默认的umask一般0022,
即创建目录的默认权限是0755,
所以这时php
mkdir('./aa/',0777)
得到目录的权限是0755.
xw@xw-X201:~/Desktop/dd/aa$
umask
0022
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw/',0777);"
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw1/',0755);"
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw2/',0747);"
xw@xw-X201:~/Desktop/dd/aa$
ll
总用量
20
drwxrwxrwx
5
xw
xw
4096
2012-06-01
11:58
./
drwxr-xr-x
6
xw
xw
4096
2012-06-01
11:26
../
drwxr-xr-x
2
xw
xw
4096
2012-06-01
11:57
xw/
drwxr-xr-x
2
xw
xw
4096
2012-06-01
11:58
xw1/
drwxr--r-x
2
xw
xw
4096
2012-06-01
11:58
xw2/
把系统默认权限改为777,mkdir()可以指定更大权限了
xw@xw-X201:~/Desktop/dd/aa$
umask
000
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw2/',0777);"
xw@xw-X201:~/Desktop/dd/aa$
ll
总用量
12
drwxrwxrwx
3
xw
xw
4096
2012-06-01
12:08
./
drwxr-xr-x
6
xw
xw
4096
2012-06-01
11:26
../
drwxrwxrwx
2
xw
xw
4096
2012-06-01
12:08
xw2/
2.chmod()函数不受系统umask影响,可以设置比系统默认权限大的权限。
xw@xw-X201:~/Desktop/dd/aa$
umask
0022
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw1/',0777);"
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw2/');"
xw@xw-X201:~/Desktop/dd/aa$
php
-r
"mkdir('./xw3/');chmod('./xw3/',0777);"
xw@xw-X201:~/Desktop/dd/aa$
ll
总用量
20
drwxrwxrwx
5
xw
xw
4096
2012-06-01
12:12
./
drwxr-xr-x
6
xw
xw
4096
2012-06-01
11:26
../
drwxr-xr-x
2
xw
xw
4096
2012-06-01
12:11
xw1/
drwxr-xr-x
2
xw
xw
4096
2012-06-01
12:11
xw2/
drwxrwxrwx
2
xw
xw
4096
2012-06-01
12:12
xw3/
3.系统的mkdir命令可以设置大于默认值的权限。
xw@xw-X201:~/Desktop/dd/aa$
umask
0022
xw@xw-X201:~/Desktop/dd/aa$
mkdir
-m0777
xw
xw@xw-X201:~/Desktop/dd/aa$
ll
总用量
12
drwxrwxrwx
3
xw
xw
4096
2012-06-01
12:18
./
drwxr-xr-x
6
xw
xw
4096
2012-06-01
11:26
../
drwxrwxrwx
2
xw
xw
4096
2012-06-01
12:18
xw/
总结:
php若要创建一个有读写权限的目录,最好使用以下代码,不要直接使用mkdir函数指定权限,以避免系统umask的影响
mkdir('./xw/');
chmod('./xw/',0777);

以上是关于php中mkdir()函数的权限问题分析的主要内容,如果未能解决你的问题,请参考以下文章

PHP mkdir:权限被拒绝问题

php mkdir权限问题

Apache 权限,PHP 文件创建,MKDir 失败

php mkdir() 权限被拒绝 mac

Centos 7 / Apache / PHP - mkdir():权限被拒绝

php mkdir 777失败