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网站来路获取代码(针对搜索引擎)
Jun 08 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
php接口数据加密、解密、验证签名
Mar 12 PHP
详解PHP对数组的定义以及数组的创建方法
Nov 27 PHP
ThinkPHP项目分组配置方法分析
Mar 23 PHP
PHP Header用于页面跳转时的几个注意事项
Oct 21 PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
用PHP的反射实现委托模式的讲解
Mar 22 PHP
PHP7数组的底层实现示例
Aug 25 PHP
详解no input file specified 三种解决方法
Nov 29 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
phpinfo 系统查看参数函数代码
2009/06/05 PHP
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
php实现的递归提成方案实例
2015/11/14 PHP
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
vue中的ref和$refs的使用
2018/11/22 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访-EG篇
2018/04/03 DOTA
利用Python如何生成hash值示例详解
2017/12/20 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
python滑块验证码的破解实现
2019/11/10 Python
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
百联网上商城:i百联
2017/01/28 全球购物
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
EJB面试题
2015/07/28 面试题
应届毕业生通用的自荐书范文
2014/02/07 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
机械专业求职信
2014/05/25 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
三人合伙协议书范本
2014/10/29 职场文书
2014年司法局工作总结
2014/12/11 职场文书
公司行政管理制度范本
2015/08/05 职场文书
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js