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中的 == 运算符进行字符串比较
Nov 26 PHP
php模板之Phpbean的目录结构
Jan 10 PHP
php date与gmdate的获取日期的区别
Feb 08 PHP
PHP多线程抓取网页实现代码
Jul 22 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 PHP
php标签云的实现代码
Oct 10 PHP
配置Nginx+PHP的正确思路与过程
May 10 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
Nov 02 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 09 PHP
PHP回调函数概念与用法实例分析
Nov 03 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
Nov 25 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
改造一台复古桌面收音机
2021/03/02 无线电
PHP通用分页类page.php[仿google分页]
2008/08/31 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
2020/11/22 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
python3编写C/S网络程序实例教程
2014/08/25 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
scrapy爬虫完整实例
2018/01/25 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
用Python实现将一张图片分成9宫格的示例
2019/07/05 Python
Python 实现训练集、测试集随机划分
2020/01/08 Python
Python如何在bool函数中取值
2020/09/21 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
印尼购物网站:iLOTTE
2019/10/16 全球购物
客房领班岗位职责
2015/02/11 职场文书
幼儿园教师管理制度
2015/08/05 职场文书
volatile保证可见性及重排序方法
2022/08/05 Java/Android