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 采集书并合成txt格式的实现代码
Mar 01 PHP
PHP开发中四种查询返回结果分析
Jan 02 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
Oct 26 PHP
PHP中$_FILES的使用方法及注意事项说明
Feb 14 PHP
php实现水仙花数示例分享
Apr 03 PHP
php按百分比生成缩略图的代码分享
May 10 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
100行PHP代码实现socks5代理服务器
Apr 28 PHP
PHP Mysqli 常用代码集合
Nov 12 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
thinkPHP中验证码的简单实现方法
Dec 05 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
php 获取客户端的真实ip
2009/11/30 PHP
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
解析php curl_setopt 函数的相关应用及介绍
2013/06/17 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
JS原型对象操作实例分析
2020/06/06 Javascript
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
python中as用法实例分析
2015/04/30 Python
python逆向入门教程
2018/01/15 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
Python 跨.py文件调用自定义函数说明
2020/06/01 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
尼克松手表官网:Nixon手表
2019/03/17 全球购物
中科创达面试题
2016/12/28 面试题
财会自我鉴定范文
2013/12/27 职场文书
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
电子信息专业自荐书
2014/02/04 职场文书
小学捐书活动总结
2014/07/05 职场文书
清洁工工作总结
2015/08/11 职场文书
自信主题班会
2015/08/14 职场文书
2019年公司卫生管理制度样本
2019/08/21 职场文书