php中mkdir()函数的权限问题分析


Posted in PHP onSeptember 24, 2016

问题描述:
使用以下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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
Jan 30 PHP
symfony表单与页面实现技巧
Jan 26 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
浅析php设计模式之数据对象映射模式
Mar 03 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
PHP微信开发之文本自动回复
Jun 23 PHP
Adnroid 微信内置浏览器清除缓存
Jul 11 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
Nov 15 PHP
PHP用函数嵌入网站访问量计数器
Oct 27 PHP
PHP设计模式之委托模式定义与用法简单示例
Aug 13 PHP
php + WebUploader实现图片批量上传功能
May 06 PHP
php 生成Tab键或逗号分隔的CSV
Sep 24 #PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 #PHP
php fread读取文件注意事项
Sep 24 #PHP
一个简单安全的PHP验证码类、PHP验证码
Sep 24 #PHP
jquery不支持toggle()高(新)版本的问题解决
Sep 24 #PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 #PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 #PHP
You might like
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
详解webpack-dev-server的简单使用
2018/04/02 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python 异常处理总结
2016/10/18 Python
python数据结构之链表详解
2017/09/12 Python
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
python实现与redis交互操作详解
2020/04/21 Python
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
介绍一下Ruby的特点
2013/01/20 面试题
护理专业推荐信
2013/11/07 职场文书
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
2014年党务公开方案
2014/05/08 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
2015年工程部工作总结
2015/04/30 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
上学路上观后感
2015/06/16 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书