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生成文件
Jan 15 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
May 19 PHP
php密码生成类实例
Sep 24 PHP
简单谈谈favicon
Jun 10 PHP
PHP整合七牛实现上传文件
Jul 03 PHP
分享PHP计算两个日期相差天数的代码
Dec 23 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
php生成无限栏目树
Mar 16 PHP
Yii2使用$this->context获取当前的Module、Controller(控制器)、Action等
Mar 29 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
PHP array_shift()用法实例分析
Jan 07 PHP
Yii框架通过请求组件处理get,post请求的方法分析
Sep 03 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中使用Oracle数据库(2)
2006/10/09 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
php stream_get_meta_data返回值
2013/09/29 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
python实现基本进制转换的方法
2015/07/11 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
python 数据的清理行为实例详解
2017/07/12 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
python二进制文件的转译详解
2019/07/03 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
使用Python实现画一个中国地图
2019/11/23 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
求职信范文怎么写
2014/01/29 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
同学聚会主持词
2014/03/18 职场文书
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python
python之django路由和视图案例教程
2021/07/26 Python
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers
深入理解 Golang 的字符串
2022/05/04 Golang
Win2008系统搭建DHCP服务器
2022/06/25 Servers