【问题标题】:Creating a directory path not working with PHPs mkdir?创建一个不适用于 PHPs mkdir 的目录路径?
【发布时间】:2011-07-01 19:45:55
【问题描述】:

我有以下目录c:/files,我正在尝试创建一个包装函数,它模拟 mkdir() 的功能,除了适用于多个文件夹,例如

mkdir 在以下方面工作正常:

mkdir('c:/files/games', 0777);

但不是这个:

mkdir('c:/files/games/say/yes', 0777); 

这里有一些粗略的代码来进一步描述我想要实现的目标:

function mmkdir($path, $chmod = 0777) {
/* do some loop or something with mkdir()? here */
}

mmkdir('C:/tmp/something/something');

mmkdir('C:/tmp/go/something');

mmkdir('C:/tmp/yes');

【问题讨论】:

  • 您是否创建了中间“say”文件夹?
  • 你的方法签名很奇怪。尝试删除 $path 变量。
  • 不,我认为 mkdir 仅通过在给定路径中创建最后一个文件夹来工作,这就是为什么我认为我可能需要创建一个包装函数来处理它?
  • @Joe:嗯?他为什么要这么做?
  • @Tomalak,自从我发表评论后,它已被编辑

标签: php for-loop foreach while-loop mkdir


【解决方案1】:

mkdir 在以下方面工作正常:

mkdir('c:/files/games', 0777);

但不是这个:

mkdir('c:/files/games/say/yes', 0777);

错了,mkdir()有第三个参数

bool mkdir (string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]])

mkdir('c:/files/games/say/yes', 0777, true); 

这会使您的自定义函数过时。但是,如果您真的想要创建自己的函数(我认为这不值得考虑,因为它已经内置了),它应该看起来像

function recursive_mkdir ($path, $chmod = 0777) {
  $parent = dirname($path);
  if (!file_exists($parent)) recursive_mkdir($parent, $chmod);
  mkdir($path, $chmod);
}

【讨论】:

  • +1:我笑了。 :) 人们什么时候才能学会阅读文档以了解他们使用的功能?太震撼了……
  • 我不知道。尤其是它比在 SO 上写问题要快得多;)
  • ...我不敢想这家伙在把这个“问题”发在这里之前花了多长时间。
【解决方案2】:

调用mkdir() 函数并将递归参数设置为TRUE。例如:

mkdir('c:/files/games/say/yes', 0777, TRUE);

【讨论】:

    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 2016-05-28
    • 2011-07-26
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    相关资源
    最近更新 更多