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 中的类
Oct 09 PHP
PHP开发规范手册之PHP代码规范详解
Jan 13 PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
Jun 20 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
测试PHP连接MYSQL成功与否的代码
Aug 16 PHP
php实现的ping端口函数实例
Nov 12 PHP
PHP简单处理表单输入的特殊字符的方法
Feb 03 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
Oct 25 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
Jul 24 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 地址栏信息的获取代码
2009/01/07 PHP
discuz目录文件资料汇总
2014/12/30 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
js操作select控件的几种方法
2010/06/02 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
Fiddler如何抓取手机APP数据包
2016/01/22 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
美国滑雪板和装备购物网站:Skis.com
2018/12/20 全球购物
中软Java笔试题
2012/11/11 面试题
青年创业培训欢迎词
2014/01/10 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
平安建设工作方案
2014/06/02 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
个人授权委托书范文
2014/09/21 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
教师培训简讯
2015/07/20 职场文书
七年级数学教学反思
2016/02/17 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
Python基础详解之邮件处理
2021/04/28 Python
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技