php的mkdir()函数创建文件夹比较安全的权限设置方法


Posted in PHP onJuly 28, 2014

问题描述:
使用以下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 mysql 判断update之后是否更新了的方法
Jan 10 PHP
php中inlcude()性能对比详解
Sep 16 PHP
ThinkPHP3.1的Widget新用法
Jun 19 PHP
thinkphp的静态缓存用法分析
Nov 29 PHP
PHP速成大法
Jan 30 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
用php代码限制国内IP访问我们网站
Sep 26 PHP
PHP输入流php://input实例讲解
Dec 22 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
php实现学生管理系统
Mar 21 PHP
PHP小偷程序的设计与实现方法详解
Oct 15 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
Oct 20 PHP
php中error与exception的区别及应用
Jul 28 #PHP
浅析get与post的一些特殊情况
Jul 28 #PHP
thinkphp学习笔记之多表查询
Jul 28 #PHP
CMS中PHP判断系统是否已经安装的方法示例
Jul 26 #PHP
PHP中file_exists函数不支持中文名的解决方法
Jul 26 #PHP
一个简洁实用的PHP缓存类完整实例
Jul 26 #PHP
PHP实现多图片上传类实例
Jul 26 #PHP
You might like
ADODB类使用
2006/11/25 PHP
php缓存技术介绍
2006/11/25 PHP
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
探讨如何把session存入数据库
2013/06/07 PHP
php操作redis缓存方法分享
2015/06/03 PHP
php实现生成验证码实例分享
2016/04/10 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
函数式编程入门实践(一)
2019/04/20 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
浅谈Python基础之I/O模型
2017/05/11 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
python中的句柄操作的方法示例
2019/06/20 Python
红领巾广播站广播稿
2014/02/01 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
小学捐书活动总结
2014/07/05 职场文书
委托书怎么写
2014/07/31 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
个人自荐书范文
2015/03/09 职场文书
学校隐患排查制度
2015/08/05 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
纯html+css实现Element loading效果
2021/08/02 HTML / CSS