为什么我在执行mkdir('dir1', '0777')后,产生的目录权限不是777呢?
注:dir1上级目录的权限是777[root@localhost dev]# ll -d dir1/
dr----x--t. 2 nobody nobody 4096 Dec  8 23:54 dir1/

解决方案 »

  1. 要 mkdir('dir1', 0777)
    而不是 mkdir('dir1', '0777')
    模式是一个 8 进制数
      

  2. 是mkdir('dir1', 0777); 而不是mkdir('dir1', '0777');它的第二个参数数据类型为int型的,并不是string型的...
      

  3. 改成mkdir('dir1', 0777)后,为什么也不是777啊
    drwxr-xr-x. 2 nobody nobody 4096 Dec  9 01:45 dir1
      

  4. Linux 有一个 umask 命令,用于“指定在建立文件时预设的权限掩码”。
    http://www.linuxso.com/command/umask.html系统缺省设置一般是 022,所以你用 mkdir('dir1', 0777) 实际得到的权限就是 0755。要改变缺省设置,你可以在 Apache 的启动脚本(一般是 apachectl)里靠前的位置执行一下这个命令,比如:
    umask 0002

    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  5. 其实 PHP 的手册里 mkdir() 函数的参数说明就提到了 umask,而且 PHP 本身也有 umask() 函数。
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  6. 看下系统的umask码,文件的实际权限是你给的权限与之与的结果
      

类似问题 »