zoukankan      html  css  js  c++  java
  • PHP执行linux命令mkdir权限问题

    在linux系统中,root帐号执行php命令:

    mkdir('test', 0777);

    结果文件的权限依然为:

    drwxr-xr-x 2 root root   Jul 27 19:30 test

    drwxr-xr-x表示权限是0755,并没有达到想要的效果。

    分析原因:

    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与022作减运算之后,就变成了 755权限。

    解决办法:

    修改umask设置为000会直接影响到linux系统的默认权限设置,因此不能直接修改。

    正确的做法应该是:

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

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

    注意:这里的"0777"为八进制表示,即“0”开头,一定不能加引号。

  • 相关阅读:
    第二周总结
    个人总结
    软件设计模式7
    软件设计模式6
    软件设计模式5
    软件设计模式4
    软件设计模式3
    软件设计模式2
    软件设计模式1
    软件构造2
  • 原文地址:https://www.cnblogs.com/whiterock/p/7229301.html
Copyright © 2011-2022 走看看