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 相关文章推荐
oracle资料库函式库
Oct 09 PHP
php下保存远程图片到本地的办法
Aug 08 PHP
php下使用curl模拟用户登陆的代码
Sep 10 PHP
php编写一个简单的路由类
Apr 13 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
PHP获取表单所有复选框的值的方法
Aug 28 PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
Mar 30 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 PHP
php批量删除操作代码分享
Feb 26 PHP
自制PHP框架之设计模式
May 07 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 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
PHP的中问验证码
2006/11/25 PHP
php array的学习笔记
2012/05/10 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
vuex实现购物车功能
2020/06/28 Javascript
Python编程中的反模式实例分析
2014/12/08 Python
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
python实现按日期归档文件
2021/01/30 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
HTML5中如何显示视频呢 HTML5视频播放demo
2013/06/08 HTML / CSS
日本著名的平价时尚女性购物网站:Fifth
2016/08/24 全球购物
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
校本教研工作方案
2014/01/14 职场文书
小学教师师德反思
2014/02/03 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
鲁迅故里导游词
2015/02/05 职场文书