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 相关文章推荐
用缓存实现静态页面的测试
Dec 06 PHP
PHP 将图片按创建时间进行分类存储的实现代码
Jan 05 PHP
PHP得到某段时间区间的时间戳 php定时任务
Apr 12 PHP
php5.3以后的版本连接sqlserver2000的方法
Jul 28 PHP
一个经典实用的PHP图像处理类分享
Nov 18 PHP
PHP列出MySQL中所有数据库的方法
Mar 12 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
Oct 22 PHP
php中static和const关键字用法分析
Dec 07 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
PHP多种序列化/反序列化的方法详解
Jun 23 PHP
php传值和传引用的区别点总结
Nov 19 PHP
php封装实现钉钉机器人报警接口的示例代码
Aug 08 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
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
Exjs 入门篇
2010/04/07 Javascript
围观tangram js库
2010/12/28 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
jQuery 在光标定位的地方插入文字的插件
2012/05/10 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
js实现拖拽功能
2017/03/01 Javascript
Angular 项目实现国际化的方法
2018/01/08 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
Python实现从url中提取域名的几种方法
2014/09/26 Python
pygame实现弹力球及其变速效果
2017/07/03 Python
python九九乘法表的实例
2017/09/26 Python
python线程池threadpool使用篇
2018/04/27 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
python实现淘宝购物系统
2019/10/25 Python
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
大学生职业生涯规划书模板
2014/01/03 职场文书
纪检监察建议书
2014/05/19 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
2014年政风行风自查自纠报告
2014/10/21 职场文书
超市收银员岗位职责
2015/04/07 职场文书
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js