【问题标题】:Why can't I create a directory within a recently created directory? [duplicate]为什么我不能在最近创建的目录中创建目录? [复制]
【发布时间】:2012-11-22 16:14:21
【问题描述】:

可能重复:
PHP mkdir and apache ownership

编辑以反映新问题:

感谢您的帮助,我可以递归地在目录中创建一个目录,但我无法在这些创建的文件夹中创建多个文件夹。

代码:

$timelineID = trim(mysql_prep($_POST['timelineID']));
mkdir("timelines/{$timelineID}/audio", 0777, true);
mkdir("timelines/{$timelineID}/image", 0777, true);
mkdir("timelines/{$timelineID}/product", 0777, true);

同样,第一个 mkdir() 成功执行,第二个没有。

错误:警告:mkdir() [function.mkdir]:安全模式限制生效。 uid/gid 为 206601/206601 的脚本不允许访问第 13 行 (file.php) 中 uid/gid 25000/25000 拥有的(我刚刚创建的目录)

【问题讨论】:

  • 你试过了吗:mkdir("timelines/{$timelineID}/audio", 0777, true);?没有umask?使用 true 递归创建目录。
  • 还要检查你是否“刚刚创建了那个目录”并且没有先在 FTP/SSH 中创建它。
  • 这适用于一个目录,谢谢!但它不适用于多个...这是我的多个代码...第一个工作其他人失败
  • mkdir("timelines/{$timelineID}/audio", 0777, true); mkdir("timelines/{$timelineID}/image", 0777, true); mkdir("timelines/{$timelineID}/product", 0777, true);
  • 您使用的是什么操作系统和 PHP 版本?

标签: php directory mkdir safe-mode umask


【解决方案1】:
mkdir(path,mode,recursive,context)

递归和上下文是可选参数

例如

mkdir("timelines/{$timelineID}/audio", 0777, true);

适用于 PHP 5+

见:http://php.net/manual/en/function.mkdir.php

【讨论】:

  • 我们让它工作了,但它不适用于创建多个文件夹。
  • 也许您有 umask 问题?您是否检查了自动创建的中间目录的权限?您可以尝试在调用mkdir 之前使用$old = umask(0); 清除umask,看看是否是问题所在(然后umask($old) 来恢复它)。
猜你喜欢
  • 2015-01-25
  • 1970-01-01
  • 2011-07-13
  • 2015-05-02
  • 2015-06-13
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
相关资源
最近更新 更多