zoukankan      html  css  js  c++  java
  • PHP mkdir 0777权限问题

    在linux系统中,即使我们使用root帐号去手工执行php命令:

    mkdir('test', 0777);

    结果文件的权限依然为:

    drwxr-xr-x 2 root root   4096 Jun 17 11:28 test

    很明显这个权限是 755

    为什么会这样呢?

    在linux系统中在创建文件/文件夹时有一个默认权限,此权限受 umask 设置影响,在/etc/bashrc配置文件中我们可以找到如下配置:

    # By default, we want this to get set.
    # Even for non-interactive, non-login shells.
    if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
            umask 002
    else
            umask 022
    fi

    这里就说明了问题,linux系统中默认的umask为022,与我们的777 &运算之后,就变成了 755,这就是原因所在了。

    解决办法:

    你可能会想到,我把这里的022 改为 000 不就可以了么?

    当然可以,不过这里的设置直接影响到linux系统的默认权限设置,不仅仅是PHP的问题。所以不建议您这么做。
    正确的做法应该是:

    mkdir('test', 0777);
    chmod('test', 0777);

    先创建目录,再使用chmod将权限修改为 777 ,这样就达到我们的目的了。

    最后,需要注意一点,权限值最好使用八进制表示,即“0”开头,而且一定不要加引号

    我就犯了一个错,加了引号

    chmod('test', '0777'); // 错误,不要加 引号('')
  • 相关阅读:
    静态字体加密分析
    JS加密分析
    Golang的数组
    Django连接oracle数据库的那些问题
    Django的forms表单组件批量设置字段样式
    自动保存python一个项目的需求文件
    记录一下今天坑爹的错误
    在Scrapy中使用selenium
    Python Scrapy框架
    调用第三方打码平台破解图片验证码
  • 原文地址:https://www.cnblogs.com/52php/p/5660079.html
Copyright © 2011-2022 走看看