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&mysql(四)
Oct 09 PHP
Discuz!下Memcache缓存实现方法
May 28 PHP
php 按指定元素值去除数组元素的实现方法
Nov 04 PHP
MySQL的FIND_IN_SET函数使用方法分享
Mar 27 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
Jun 25 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
Apr 29 PHP
php实现建立多层级目录的方法
Jul 19 PHP
ThinkPHP分组下自定义标签库实例
Nov 01 PHP
javascript some()函数用法详解
Nov 13 PHP
php 删除cookie方法详解
Dec 01 PHP
php字符串的替换,分割和连接方法
May 23 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 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
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
2010/03/21 PHP
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
2012/10/11 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
django 修改server端口号的方法
2018/05/14 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
python实现蒙特卡罗方法教程
2019/01/28 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
python实现猜拳游戏
2020/03/04 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
Oracle性能调优原则
2012/05/03 面试题
室内设计自我鉴定
2013/10/15 职场文书
专业销售业务员求职信
2013/11/18 职场文书
工作个人的自我评价
2014/01/14 职场文书
大学生涯自我鉴定
2014/01/16 职场文书
企业诚信承诺书
2014/05/23 职场文书
村干部任职承诺书
2015/01/21 职场文书
员工离职通知函
2015/04/25 职场文书
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript