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获取类中常量,属性,及方法列表的方法
Apr 09 PHP
基于curl数据采集之单页面采集函数get_html的使用
Apr 28 PHP
使用swoole扩展php websocket示例
Feb 13 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
Aug 15 PHP
php中多维数组按指定value排序的实现代码
Aug 19 PHP
yii的CURD操作实例详解
Dec 04 PHP
php中switch与ifelse的效率区别及适用情况分析
Feb 12 PHP
PHP实现多关键字加亮功能
Oct 21 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
PHP获取真实客户端的真实IP
Mar 07 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 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
扩展你的 PHP 之入门篇
2006/12/04 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
prototype 的说明 js类
2006/09/07 Javascript
JavaScript 应用类库代码
2008/06/02 Javascript
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
Node.js插件的正确编写方式
2014/08/03 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
Flask数据库迁移简单介绍
2017/10/24 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
python随机数分布random测试
2018/08/27 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
初中化学教学反思
2014/01/23 职场文书
购房意向书
2014/08/30 职场文书
普通话演讲稿
2014/09/03 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
2022/04/02 Servers