【问题标题】:PHP folder permissions problemPHP文件夹权限问题
【发布时间】:2011-11-14 10:22:32
【问题描述】:

我正在尝试使用 PHP 创建一个文件夹,然后在其中创建另一个文件夹。

如果这是我的目录结构

/home/site                           (owner : user1)

现在,我使用

创建文件夹
mkdir("/home/site/newdir",0777);     (user : apache)

目录 /home/site/newdir 已创建,但该目录的用户是“apache

现在,做

mkdir("/home/site/newdir/anotherdir",0777);

不会在 newdir 中创建另一个目录。

请帮忙。我认为是所有者的问题。 我也无法使用 chmod() 更改所有者。所有者保持不变。

这可能是什么原因造成的?

编辑:

<?php
error_reporting(E_ALL);

mkdir("./m",0777);  // works
mkdir("./m/v",0777); // doesnt work

页面上没有错误。

var_dump(is_writeable("./m")) // returns bool(true)

编辑:这已得到修复。对于可能面临同样问题的其他人,这是因为 PHP 的安全模式处于“开启”状态。仍然不知道为什么安全模式不允许您创建嵌套目录。

但是现在可以了。感谢大家阅读。

【问题讨论】:

  • 您正在创建具有 0777 权限的目录,这一定不是权限问题。尝试在 /home/site/newdir 中创建目录时 PHP 是否显示任何错误?
  • 没有错误。 var_dump(is_writeable("./m")) 返回真。检查我编辑的帖子。
  • mkdir("./m/v", 0777, true); 呢?
  • 已修复。请查看原帖。感谢大家的帮助。
  • 注意:chmod 永远不能更改文件或目录的所有者,这不是它的作用。 chown 会这样做,但是在任何合理的服务器设置下,您将无法实际使用它(您需要是 root)。

标签: php linux file-permissions


【解决方案1】:

mkdir() 创建的目录上的模式受您当前的 umask 影响,这就是为什么 chmod() 不适合您。

试试:

$old_mask = umask(0);
mkdir("/home/site/newdir/anotherdir",0777);
umask($old_mask);

【讨论】:

    猜你喜欢
    • 2011-09-17
    • 2011-01-11
    • 2012-08-27
    • 2018-04-08
    • 2016-09-21
    • 1970-01-01
    • 2012-01-05
    • 2015-08-28
    • 2017-07-04
    相关资源
    最近更新 更多