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 相关文章推荐
无限级别菜单的实现
Oct 09 PHP
PHP伪静态页面函数附使用方法
Jun 20 PHP
PHP的SQL注入实现(测试代码安全不错)
Feb 27 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
php对csv文件的读取,写入,输出下载操作详解
Aug 10 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 PHP
使用Appcan客户端自动更新PHP版本号(全)
Jul 31 PHP
CI框架文件上传类及图像处理类用法分析
May 18 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
Jul 12 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
Oct 26 PHP
详解php curl带有csrf-token验证模拟提交方法
Apr 18 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
几种显示数据的方法的比较
2006/10/09 PHP
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
PHP概率计算函数汇总
2015/09/13 PHP
用jQuery扩展自写的 UI导航
2010/01/13 Javascript
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
namespace.js Javascript的命名空间库
2011/10/11 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
javascript控制台详解
2015/06/25 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
浅析Python中的序列化存储的方法
2015/04/28 Python
Python的Django框架中的表单处理示例
2015/07/17 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
如何在Python对Excel进行读取
2020/06/04 Python
写一个用矩形法求定积分的通用函数
2012/11/08 面试题
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
汇科协同Java笔试题
2012/03/31 面试题
城建学院毕业生自荐信
2014/01/31 职场文书
教师评语大全
2014/04/28 职场文书
伦敦奥运会口号
2014/06/13 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
赢在执行观后感
2015/06/16 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP
Go归并排序算法的实现方法
2022/04/06 Golang