问题描述:

使用以下php代码创建了一个目录,期望目录的权限是0777,实际结果是0755

  1. mkdir('./aa/',0777);

分析与测试结果:

1.mkdir()函数指定的目录权限只能小于等于系统umask设定的默认权限。

如linux默认的umask一般0022, 即创建目录的默认权限是0755, 所以这时php  mkdir('./aa/',0777) 得到目录的权限是0755.

  1. xw@xw-X201:~/Desktop/dd/aa$ umask
  2. 0022
  3. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw/',0777);"
  4. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw1/',0755);"
  5. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/',0747);"
  6. xw@xw-X201:~/Desktop/dd/aa$ ll
  7. 总用量 20
  8. drwxrwxrwx 5 xw xw 4096 2012-06-01 11:58 ./
  9. drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
  10. drwxr-xr-x 2 xw xw 4096 2012-06-01 11:57 xw/
  11. drwxr-xr-x 2 xw xw 4096 2012-06-01 11:58 xw1/
  12. drwxr--r-x 2 xw xw 4096 2012-06-01 11:58 xw2/

把系统默认权限改为777,mkdir()可以指定更大权限了

  1. xw@xw-X201:~/Desktop/dd/aa$ umask 000
  2. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/',0777);"
  3. xw@xw-X201:~/Desktop/dd/aa$ ll
  4. 总用量 12
  5. drwxrwxrwx 3 xw xw 4096 2012-06-01 12:08 ./
  6. drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
  7. drwxrwxrwx 2 xw xw 4096 2012-06-01 12:08 xw2/

2.chmod()函数不受系统umask影响,可以设置比系统默认权限大的权限。

  1. xw@xw-X201:~/Desktop/dd/aa$ umask
  2. 0022
  3. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw1/',0777);"
  4. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/');"
  5. xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw3/');chmod('./xw3/',0777);"
  6. xw@xw-X201:~/Desktop/dd/aa$ ll
  7. 总用量 20
  8. drwxrwxrwx 5 xw xw 4096 2012-06-01 12:12 ./
  9. drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
  10. drwxr-xr-x 2 xw xw 4096 2012-06-01 12:11 xw1/
  11. drwxr-xr-x 2 xw xw 4096 2012-06-01 12:11 xw2/
  12. drwxrwxrwx 2 xw xw 4096 2012-06-01 12:12 xw3/

3.系统的mkdir命令可以设置大于默认值的权限。

  1. xw@xw-X201:~/Desktop/dd/aa$ umask
  2. 0022
  3. xw@xw-X201:~/Desktop/dd/aa$ mkdir -m0777 xw
  4. xw@xw-X201:~/Desktop/dd/aa$ ll
  5. 总用量 12
  6. drwxrwxrwx 3 xw xw 4096 2012-06-01 12:18 ./
  7. drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
  8. drwxrwxrwx 2 xw xw 4096 2012-06-01 12:18 xw/

总结:

php若要创建一个有读写权限的目录,最好使用以下代码,不要直接使用mkdir函数指定权限,以避免系统umask的影响

  1. mkdir('./xw/');
  2. chmod('./xw/',0777);

参考文章:

LINUX UMASK详解

PHP用mkdir()新建立目录无写的权限的问题

原文:http://blog.csdn.net/tsxw24/article/details/7622832

php中mkdir()函数的权限问题(转)的更多相关文章

  1. PHP mkdir()无写权限的问题解决方法

    这篇文章主要介绍了PHP mkdir()无写权限的问题解决方法,对umask做了详细解释以及mkdir()后没写权限的解决方法,需要的朋友可以参考下   使用mkdir创建文件夹时,发现这个函数有两个 ...

  2. 《APUE》中的函数整理

    第1章 unix基础知识 1. char *strerror(int errnum) 该函数将errnum(就是errno值)映射为一个出错信息字符串,返回该字符串指针.声明在string.h文件中. ...

  3. Linux中文件函数(二)

    一.link.linkat.unlink.unlinkat.remove函数 创建一个指向现有文件的链接的方法是使用link函数或linkat函数.函数的原型为: #include <unist ...

  4. PHP mkdir() 函数

    定义和用法 mkdir() 函数创建目录. 如果成功该函数返回 TRUE,如果失败则返回 FALSE. 语法 mkdir(path,mode,recursive,context) 参数 描述 path ...

  5. mysql中find_in_set()函数的使用

    首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文等等 .现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储.那我 ...

  6. python中定义函数和参数的传递问题

    作者:達聞西链接:https://zhuanlan.zhihu.com/p/24162430来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 5.2.4 函数.生成器和类 ...

  7. linux和window下mkdir函数问题(转-锦曦月)

    通过WIN32宏进行判断   window下mkdir函数   #include<direct.h> int _mkdir( const char *dirname );   linux下 ...

  8. [php-src]理解Php内核中的函数与INI

    内容均以php-5.6.14为例. 一. 函数结构 内核中定义一个php函数使用 PHP_FUNCTION 宏 包装,扩展也不例外,该宏在 ./main/php.h:343 有着一系列类似以 PHP ...

  9. MySQL中的账号与权限管理

    MySQL权限管理 权限系统的工作原理     MySQL权限系统通过下面两个阶段进行认证:     (1)对连接的用户进行身份认证,合法的用户通过认证.不合法的用户拒绝连接.     (2)对通过认 ...

随机推荐

  1. MSF——基本使用和Exploit模块(一)

    MSF系列: MSF——基本使用和Exploit模块(一) MSF——Payload模块(二) MSF——Meterpreter(三) MSF——信息收集(四) MSF——Metasploit Fra ...

  2. Visual Assist 10.9.2248 破解版(支持VS2017) 转载

    自己在Windows10下同时安装了VS2017和VS2013,先装的VS2017和Visual Assist,后装的VS2013,发现VS2013中没显示Visual Assist,Google了一 ...

  3. leetcode.图.785判断二分图-Java

    1. 具体题目 给定一个无向图graph,当这个图为二分图时返回true.如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这 ...

  4. 48-python基础-python3-字符串-常用字符串方法(六)-strip()-rstrip()-lstrip()

    7-用 strip().rstrip()和 lstrip()删除空白字符 strip()字符串方法将返回一个新的字符串,它的开头或末尾都没有空白字符. lstrip()和 rstrip()方法将相应删 ...

  5. web前端架构师学习流程

    JavaScript 开发(高级) 系统知识 1.1ECMAScript标准的发展过程,ES6语言对JavaScript的改进: 1.2ES6中语法层面的新特性(let.const.参数扩展.模块化等 ...

  6. 用户Bug修补报告

    用户Bug修补报告 虽然经过许多天的奋斗,我们的U-Help已经正式投入使用,不过在使用过程中遇到了大大小小的问题,我们通过努力修补了其中的相当一部分,以下是用户Bug修补报告. 7.31:发布bet ...

  7. eclipse里部署struts2

    Struts2是一个比较出色的基于MVC设计模式的框架,是由Struts1和WebWork发展而来的,性能也比较稳定,现在是Apache软件基金会的一个项目,下面就来配置Struts2进行初始化的开发 ...

  8. v-bind属性,v-model属性,:model属性

    一.v-bind 1.将按钮的title(key)绑定为data里指定的值 强调<input type="button" value="按钮" v-bin ...

  9. js插件-简单拖拽

    前端开发的时候,有好多地方用到拖拽效果,当然 http://jqueryui.com/draggable/  是个不错的选择,but 我是个打破砂锅问到底的人,抽点时间用js小小的实现了类似的插件,话 ...

  10. Delphi UTF编码 UTF8Encode、UTF8Decode、URLEncode、URLDecode

    一.URL简介    URL是网页的地址,比如 http://www.cnblogs.com.Web 浏览器通过 URL 从 web 服务器请求页面.    由于URL字符串常常会包含非ASCII字符 ...