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 相关文章推荐
怎样在UNIX系统下安装MySQL
Oct 09 PHP
php ckeditor上传图片文件名乱码解决方法
Nov 15 PHP
php判断数组元素中是否存在某个字符串的方法
Jun 14 PHP
PHP缓存机制Output Control详解
Jul 14 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
PHP中的Streams详细介绍
Nov 12 PHP
php实现微信公众平台账号自定义菜单类
Oct 11 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
Dec 28 PHP
Centos PHP 扩展Xchche的安装教程
Jul 09 PHP
JavaScript实现删除电脑的关机键
Jul 26 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
Laravel相关的一些故障解决
Aug 19 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字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
javascript 获取select下拉列表值的代码
2009/09/07 Javascript
jquery 问答知识整理
2010/02/11 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
angularjs基础教程
2014/12/25 Javascript
JavaScript中的eval()函数使用介绍
2014/12/31 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
2016/11/16 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
js中的面向对象入门
2017/03/06 Javascript
详解Vue方法与事件
2017/03/09 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
21行Python代码实现拼写检查器
2016/01/25 Python
微信跳一跳python代码实现
2018/01/05 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
日语求职信范文
2013/12/17 职场文书
写给老师的表扬信
2014/01/21 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
婚礼家长致辞
2015/07/27 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
深入浅析Django MTV模式
2021/09/04 Python
Python if else条件语句形式详解
2022/03/24 Python
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL