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 相关文章推荐
基于mysql的bbs设计(三)
Oct 09 PHP
PHP安全配置
Dec 06 PHP
dedecms 制作模板中使用的全局标记图文教程
Mar 11 PHP
深入解析php中的foreach函数
Aug 31 PHP
php实现保存submit内容之后禁止刷新
Mar 19 PHP
php实现的CSS更新类实例
Sep 22 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 PHP
Yii2实现UploadedFile上传文件示例
Feb 15 PHP
利用php操作memcache缓存的基础方法示例
Aug 02 PHP
Codeigniter里的无刷新上传的实现代码
Apr 14 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
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
JavaScript运算符小结
2015/06/03 Javascript
jquery密码强度校验
2015/12/02 Javascript
微信小程序 火车票查询实例讲解
2016/10/17 Javascript
vue 组件 全局注册和局部注册的实现
2018/02/28 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
2018/08/15 Javascript
koa-router源码学习小结
2018/09/07 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
JavaScript实现单图片上传并预览功能
2019/09/30 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
python正则表达式面试题解答
2020/04/28 Python
python实现图片筛选程序
2018/10/24 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
python如何变换环境
2020/07/21 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
机电一体化毕业生求职信
2013/11/02 职场文书
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
村委会换届选举方案
2014/05/03 职场文书
导师鉴定意见
2015/06/05 职场文书
狂人日记读书笔记
2015/06/30 职场文书
公司保洁员管理制度
2015/08/04 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
详解Python函数print用法
2021/06/18 Python
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android
为Centos安装指定版本的Docker
2022/04/01 Servers
Mysql如何查看是否使用到索引
2022/12/24 MySQL