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去除字符串中空字符的常用方法小结
Mar 17 PHP
浅谈PHP中Stream(流)
Jun 08 PHP
浅析PHP中Session可能会引起并发问题
Jul 23 PHP
php批量删除超链接的实现方法
Oct 19 PHP
验证坐标在某坐标区域内php代码
Oct 08 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
php微信公众号开发之答题连闯三关
Oct 20 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
Nov 22 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
Mar 03 PHP
PHP队列场景以及实现代码实例详解
Feb 26 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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
2010/06/05 PHP
php 定界符格式引起的错误
2011/05/24 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
PHP代码优化技巧小结
2015/09/29 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
jQuery Selector选择器小结
2010/05/06 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
2016/12/12 Javascript
Angular2库初探
2017/03/01 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
Python压缩和解压缩zip文件
2015/02/14 Python
python处理大数字的方法
2015/05/27 Python
Python中操作符重载用法分析
2016/04/29 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
Django REST framework 分页的实现代码
2019/06/19 Python
详解Django 时间与时区设置问题
2019/07/23 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
python RSA加密的示例
2020/12/09 Python
详解Canvas事件绑定
2018/06/27 HTML / CSS
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
全球性的在线商店:Vogca
2019/05/10 全球购物
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
建设工程授权委托书
2014/09/22 职场文书
2014年实验室工作总结
2014/12/03 职场文书
教师工作态度自我评价
2015/03/05 职场文书
校园之声广播稿
2015/08/18 职场文书
python 对图片进行简单的处理
2021/06/23 Python