php中mkdir()函数的权限问题(转)
问题描述:
使用以下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);
参考文章:
原文:http://blog.csdn.net/tsxw24/article/details/7622832
php中mkdir()函数的权限问题(转)的更多相关文章
- PHP mkdir()无写权限的问题解决方法
这篇文章主要介绍了PHP mkdir()无写权限的问题解决方法,对umask做了详细解释以及mkdir()后没写权限的解决方法,需要的朋友可以参考下 使用mkdir创建文件夹时,发现这个函数有两个 ...
- 《APUE》中的函数整理
第1章 unix基础知识 1. char *strerror(int errnum) 该函数将errnum(就是errno值)映射为一个出错信息字符串,返回该字符串指针.声明在string.h文件中. ...
- Linux中文件函数(二)
一.link.linkat.unlink.unlinkat.remove函数 创建一个指向现有文件的链接的方法是使用link函数或linkat函数.函数的原型为: #include <unist ...
- PHP mkdir() 函数
定义和用法 mkdir() 函数创建目录. 如果成功该函数返回 TRUE,如果失败则返回 FALSE. 语法 mkdir(path,mode,recursive,context) 参数 描述 path ...
- mysql中find_in_set()函数的使用
首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文等等 .现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储.那我 ...
- python中定义函数和参数的传递问题
作者:達聞西链接:https://zhuanlan.zhihu.com/p/24162430来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 5.2.4 函数.生成器和类 ...
- linux和window下mkdir函数问题(转-锦曦月)
通过WIN32宏进行判断 window下mkdir函数 #include<direct.h> int _mkdir( const char *dirname ); linux下 ...
- [php-src]理解Php内核中的函数与INI
内容均以php-5.6.14为例. 一. 函数结构 内核中定义一个php函数使用 PHP_FUNCTION 宏 包装,扩展也不例外,该宏在 ./main/php.h:343 有着一系列类似以 PHP ...
- MySQL中的账号与权限管理
MySQL权限管理 权限系统的工作原理 MySQL权限系统通过下面两个阶段进行认证: (1)对连接的用户进行身份认证,合法的用户通过认证.不合法的用户拒绝连接. (2)对通过认 ...
随机推荐
- SpringBoot-技术专区-实战方案-应用监控线程池
背景 废话不多说,做这个监控的背景很简单,我们的项目都是以spring boot框架为基础开发的,代码里所有的异步线程都是通过@Async标签标注的,并且标注的时候都是指定对应线程池的,如果不知@As ...
- 字符串格式的Url的截取
一,我们先在看在页面上获取的URL的处理,如下方法: //获取全部URL string Url = Request.Url.ToString(); Url += "</br>&q ...
- bzoj2582 [Usaco2012Jan]Bovine Alliance
[Usaco2012Jan]Bovine Alliance Time Limit: 2 Sec Memory Limit: 128 MB Description Bessie and her bovi ...
- nginx的原理
Nginx会按需同时运行多个进程:一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程 (cache loader)和缓存管理器进程(cache manager) ...
- RabbitMQ 在 Win10 环境下的安装与配置
1 RabbitMQ 环境配置 1.1 ErLang 下载安装 RabbitMQ 需要 ErLang 环境支持:首先下载 ErLang 并安装. 建议使用新版本,版本过低存在与 Rab ...
- elk 解决浏览器跨域问题
1.执行命令: docker pull sebp/elk 将镜像pull到本地来: 2.执行命令: docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 ...
- Linux面试基础(二)
Linux常用目录——存放 /bin 所有用户可以使用的可执行文件 /sbin 新管理员使用的执行文件 /boot Linux内核映像文件和与引导加载有关的文件 /dev 设备文件 /etc ...
- 转:谈谈Linux下动态库查找路径的问题
http://blog.chinaunix.net/uid-23069658-id-4028681.html 学习到了一个阶段之后,就需要不断的总结.沉淀.清零,然后才能继续“上路”.回想起自己当年刚 ...
- vue-cli脚手架工具新老版本安装对比
1.老版本 Shift+鼠标右键 选择打开命令窗口 1.创建项目之前,需先确保本机已经安装node 在命令窗口中执行node -v npm -v 2.一般情况下用npm安装东西比较慢,可以使用淘宝 ...
- sql格式化时间
sql格式化date类型 DATE_FORMAT(nuw(), '%Y-%m-%d') sql格式化long类型时间 FROM_UNIXTIME(time/1000,'%Y-%m-%d')