mkdir在../中创建一个文件夹 - 无法打开流

时间:2014-10-19 12:29:13

标签: php mkdir

文件夹结构(窗口)

[root] level 0
      - [lib] level 1
        - core.php
      - [logs] level 1
         -[preg_match number] level 2
          - preg_match number.log
      - [ajax] level 1
         - log_gen.php
      - log_gen_root.php 
[/root]

生成器的lib / core.php片段

if (preg_match('~\d{24}~', $fname, $m)){
//var_dump($m[1]);
    if (!file_exists('logs/'.$m[0])) {
    mkdir('logs/'.$m[0], 0777, true);
}
}

我在lib / core.php中找到mkdir函数,preg_match获取数字(作为$ fname)并返回数字(作为$ m [0])..有两个选项

$ fname等于:变体1。 第一个变体是从根文件夹创建的,例如log_gen_root.php,一切都在这里工作

logs/544444466666666666666667/544444466666666666666667.log

$ fname等于:变体2。 第二个变体是当我尝试从位置ajax / log_gen.php访问相同的mkdir时导致错误。在这两种情况下,日志文件夹都放在root中。

../logs/544444466666666666666666/544444466666666666666666.log

警告:file_put_contents(../ logs / 544444466666666666666666 / 544444466666666666666666.log):无法打开流:第103行的C:\ xampp \ htdocs \ proj \ lib \ core.php中没有此类文件或目录

1 个答案:

答案 0 :(得分:1)

这里可能发生两件事:

  1. 您在lib目录上没有正确的权限来创建新文件夹
  2. 您的路径不正确。
  3. 尝试使用以下代码来获取目录,而不是使用相对路径。

    $folder = realpath(__DIR__ . '/..') . '/lib/';
    
    if (!file_exists($folder . $m[0])) {
        mkdir($folder . $m[0], 0777, true);
    }