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
一个更简单的无限级分类菜单代码
Jan 16 PHP
php扩展ZF――Validate扩展
Jan 10 PHP
php抓取页面的几种方法详解
Jun 17 PHP
使用php判断网页是否gzip压缩
Jun 25 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
PHP速成大法
Jan 30 PHP
php中curl使用指南
Feb 05 PHP
php模拟服务器实现autoindex效果的方法
Mar 10 PHP
php获取Google机器人访问足迹的方法
Apr 15 PHP
PHP实现获取文件后缀名的几种常用方法
Aug 08 PHP
Yii2框架制作RESTful风格的API快速入门教程
Nov 08 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计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
如何用javascript判断录入的日期是否合法
2007/01/08 Javascript
jQuery对象[0]是什么含义?
2010/07/31 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
Vue 自定义动态组件实例详解
2018/03/28 Javascript
微信小程序开发的基本流程步骤
2019/01/31 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
Python检测网站链接是否已存在
2016/04/07 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
为什么Python中没有"a++"这种写法
2018/11/27 Python
python实现单链表的方法示例
2019/09/03 Python
python处理document文档保留原样式
2019/09/23 Python
Python常用模块logging——日志输出功能(示例代码)
2019/11/20 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
集中采购方案
2014/06/10 职场文书
雨花台导游词
2015/02/06 职场文书
保险内勤岗位职责
2015/04/13 职场文书
数据库之SQL技巧整理案例
2021/07/07 SQL Server
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL