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)对通过认 ...
随机推荐
- HTTP面试题目
转自:http://m.blog.csdn.net/zhangliangzi/article/details/51336564 1.说一下什么是Http协议? 对器客户端和 服务器端之间数据传输的格式 ...
- java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation getting while running test project?
转摘:http://stackoverflow.com/questions/11155340/java-lang-illegalaccesserror-class-ref-in-pre-verifie ...
- elasticsearch api约定
elasticsearch REST API 使用JSON通过HTTP协议传输. 本约定贯穿整个REST API,除非有特别的说明. 一.多重索引 大多数APIs引用到一个index参数来在多个索引中 ...
- mysql中关于--login-path使用
在控制台登陆数据库,快捷登录 在控制台连接数据库,需要每次输入账号密码,感觉很麻烦,偶然发现可以通过login-path保存信息,实现快捷登录,这里记录下. 保存账号信息 mysql_config_e ...
- ubuntu服务器端使用无界面selenium+ chrome + headless
本来想直接用Ubuntu系统里面的firefox来实现selenium自动操作签到的,但是总是出各种问题.没办法,改为Chrome.参考:Ubuntu 线上无界面服务器 使用selenium chro ...
- K8S操作
一.K8Spods操作 kubectl delete all --all //删除 所有pods
- Linux拓展练习部分--输入输出 / find部分 /基础拓展2
目录 输入输出部分 find部分 基础阶段-拓展练习2 输入输出部分 1.输入时间命令"date"将当前系统时间输出到/data/1.txt [root@centos7 ~]# d ...
- Oracle Linux下使用sqlplus的edit命令
1.使当前会话生效 define_editor=vi SQL> select * from dual; D - X SQL> edit Wrote file afiedt.buf 21 1 ...
- web之请求转发与重定向
请求转发: 重定向:
- 关于使用html2canvas 绘制图片的坑
html2canvas绘制跨域图片之后,会导致画布被污染,从而无法使用canvas的toDateUrl()等方法获取图片数据的方法,这是canvas的限制而并非html2canvas的原因.好了锅甩好 ...