问题描述:

使用以下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. Java并发AtomicReferenceArray类

    java.util.concurrent.atomic.AtomicReferenceArray类提供了可以原子读取和写入的底层引用数组的操作,并且还包含高级原子操作. AtomicReference ...

  2. 用css3写出的倒三角形

    <!DOCTYPE html><html><head><meta charset="gb2312" /><title>无 ...

  3. Dubbo 系列(07-2)集群容错 - 服务路由

    目录 Dubbo 系列(07-2)集群容错 - 服务路由 1. 背景介绍 1.1 继承体系 1.2 SPI 2. 源码分析 2.1 创建路由规则 2.2 RouteChain 2.3 条件路由 Dub ...

  4. Python做个小游戏

    Ps.可去知乎搜索“雨露浅歌”大神,他写的帖子里有详细讲解和源码. 游戏概述.玩法:通过键盘的↑键来控制小球往上走,当松开↑键时,小球以一定速度向下掉,小球每越过一根棒加1000分,越过一个飞镖加20 ...

  5. luoguP1080 国王游戏 题解(NOIP2012)(贪心+高精)

    luoguP1080 国王游戏 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include& ...

  6. XX-net 3.11.9 登陆Google等出现没有开启cookie的问题

    糟糕!您的浏览器似乎禁用了 Cookie.请务必启用 Cookie 或尝试打开一个新的浏览器窗口. 出现这个问题解决方法: 1.配置好X-tunnel,即登录账号2.打开谷歌浏览器或者你用的浏览器,设 ...

  7. mybatis默认的数据源连接池(PooledDataSource和UnPooledDataSource)

    一般情况下我们操作数据库都是通过connection,但是频繁创建和删除connection会严重影响效率,因此在这种情况下我们一般会用到连接池,因为项目中用到的是mybatis,所以了解一下myba ...

  8. 最长上升子序列(LIS)长度及其数量

    例题51Nod-1376,一个经典问题,给出一个序列问该序列的LIS以及LIS的数量. 这里我学习了两种解法,思路和代码都是参考这两位大佬的: https://www.cnblogs.com/reve ...

  9. pycharm查找替换快捷键

    查找:CTRL + F 替换:CTRL + R 如果想删除,替换那一栏不填就可以了

  10. MySQL-几种关联

    左表t1: DROP TABLE IF EXISTS t1; )); ,'t1a'); ,'t1b'); ,'t1c'); ,'t1d'); ,'t1f'); 右表 t2: DROP TABLE IF ...