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 字符串正则替换函数preg_replace使用说明
Jul 15 PHP
PHP中文件缓存转内存缓存的方法
Dec 06 PHP
smarty模板中拼接字符串的方法
Feb 14 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
Jun 26 PHP
2款PHP无限级分类实例代码
Nov 11 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
Jul 14 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
Apr 05 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
php原生数据库分页的代码实例
Feb 18 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
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
iframe 异步加载技术及性能分析
2011/07/19 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
2014/12/20 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
python数据结构之图深度优先和广度优先实例详解
2015/07/08 Python
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
python中的print()输出
2019/04/12 Python
python实现动态数组的示例代码
2019/07/15 Python
python简单实现9宫格图片实例
2020/09/03 Python
Python类成员继承重写的实现
2020/09/16 Python
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
技术总监的工作职责
2013/11/13 职场文书
实习生单位鉴定意见
2013/12/04 职场文书
中层干部培训方案
2014/06/16 职场文书
代理人委托书
2014/08/01 职场文书
岳庙导游词
2015/02/04 职场文书
教师个人成长总结
2015/02/11 职场文书
教师师德工作总结2015
2015/07/22 职场文书
2019同学聚会主持词
2019/05/06 职场文书
Python中的datetime包与time包包和模块详情
2022/02/28 Python