php的mkdir()函数创建文件夹比较安全的权限设置方法


Posted in PHP onJuly 28, 2014

问题描述:
使用以下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 不同编码下的字符串长度区分
Sep 26 PHP
php实现mysql同步的实现方法
Oct 21 PHP
PHP 获取目录下的图片并随机显示的代码
Dec 28 PHP
paypal即时到账php实现代码
Nov 28 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
Jul 08 PHP
php之readdir函数用法实例
Nov 13 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
Nov 19 PHP
php程序员应具有的7种能力小结
Nov 27 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
Aug 31 PHP
CodeIgniter视图使用注意事项
Jan 20 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 PHP
php中error与exception的区别及应用
Jul 28 #PHP
浅析get与post的一些特殊情况
Jul 28 #PHP
thinkphp学习笔记之多表查询
Jul 28 #PHP
CMS中PHP判断系统是否已经安装的方法示例
Jul 26 #PHP
PHP中file_exists函数不支持中文名的解决方法
Jul 26 #PHP
一个简洁实用的PHP缓存类完整实例
Jul 26 #PHP
PHP实现多图片上传类实例
Jul 26 #PHP
You might like
PHP 第三节 变量介绍
2012/04/28 PHP
php eval函数用法总结
2012/10/31 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
js 页面执行时间计算代码
2009/03/04 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
jstree的简单实例
2016/12/01 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
Linux机考试题
2015/10/16 面试题
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
师说教学反思
2014/02/07 职场文书
丽江古城导游词
2015/02/03 职场文书
小学运动会报道稿
2015/07/22 职场文书
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL
python实现双向链表原理
2022/05/25 Python