【问题标题】:PHP mkdir() permissionsPHP mkdir() 权限
【发布时间】:2011-12-14 07:03:26
【问题描述】:

我有一个使用 appache 作为 Web 服务器的 Linux 服务器。在我的 PHP 脚本中,我正在使用 0777 模式创建目录。代码很简单,如下:

mkdir($path,0777)

当我运行此脚本并转到我的服务器文件管理器时,该文件夹在那里,但分配给该文件夹的权限是 0755。我不知道为什么会这样!创建文件夹时,用户列中包含 apache,但权限为 0755。

【问题讨论】:

    标签: php apache mkdir


    【解决方案1】:

    可能是你的 umask:

    <?php
    $old = umask(0);
    mkdir($dir,0777);
    mask($old);
    ?>
    

    【讨论】:

      【解决方案2】:

      Apache 可能无权更改此设置。你能做的是。确保 apache 与当前文件组在同一组中运行。然后 apache 将能够对该文件进行更改。您可以在此 apache 配置中更改您的 apache 组。或者最简单的方法就是把整个项目用户改成apache用户。然后 apache 就可以做出它想要的改变了。

      从您的服务器转到文件并输入 ls -al 并查看用户和组

      【讨论】:

        【解决方案3】:

        你应该试试umask

        $old = umask(0); 
        mkdir($path,0777); 
        umask($old); 
        

        【讨论】:

        • 谢谢!解决了问题...但仍然困惑为什么我的脚本能够创建 777 文件夹权限?
        • @Salmanmahmood:这是Linux中应该理解的东西cyberciti.biz/tips/…只是一个供您参考的链接
        • 正常情况下umask为022,表示忽略任何组或其他写权限。所以如果请求的权限是 0777,那么授予的权限就是 0777 - 022 = 0755。
        【解决方案4】:

        你可以试试:

        chmod ( string $filename , int $mode )
        

        看看这是否可以解决权限问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-06-09
          • 2011-04-15
          • 2018-03-19
          • 1970-01-01
          • 2012-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多