php的mkdir()函数创建文件夹比较安全的权限设置方法
2015-01-24信息快讯网
这篇文章主要介绍了php的mkdir()函数创建文件夹比较安全的权限设置方法,遇到的情况是系统umask影响了mkdir的指定权限参数比期望要小,使用chmod函数则没有这个问题,需要的朋友可以参考下
问题描述:
使用以下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中最简单的字符串匹配算法
PHP实现将科学计数法转换为原始数字字符串的方法
php输出金字塔的2种实现方法
PHP使用xmllint命令处理xml与html的方法
php使用pdo连接报错Connection failed SQLSTATE的解决方法
PHP里8个鲜为人知的安全函数分析
php中Ctype函数用法详解
PHP原生函数一定好吗?
php页面函数设置超时限制的方法
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
php中mkdir函数用法实例分析
php开启与关闭错误提示适用于没有修改php.ini的权限
php中把美国时间转为北京时间的自定义函数分享
php中error与exception的区别及应用
thinkphp学习笔记之多表查询
CMS中PHP判断系统是否已经安装的方法示例
PHP中file_exists函数不支持中文名的解决方法
一个简洁实用的PHP缓存类完整实例
Codeigniter中mkdir创建目录遇到权限问题和解决方法
PHP中可以自动分割查询字符的Parse_str函数使用示例
ThinkPHP单字母函数(快捷方法)使用总结
ThinkPHP权限认证Auth实例详解
PHP中使用glob函数实现一句话删除某个目录下的所有文件
ThinkPHP字符串函数及常用函数汇总
destoon安全设置中需要设置可写权限的目录及文件
PHP mkdir()无写权限的问题解决方法
Codeigniter整合Tank Auth权限类库详解
php使用mkdir创建多级目录入门例子
关于IIS php调用com组件的权限问题
如何用phpmyadmin设置mysql数据库用户的权限