【问题标题】:PHP mkdir issue!PHP mkdir 问题!
【发布时间】:2011-02-21 05:10:30
【问题描述】:

我试图创建一些这样的目录:

@mkdir("photos/$cat/$sku", 0777, true)

它使用 0777 权限创建第一个目录,但是当它创建第二个目录时使用 000 作为它的权限,所以它无法创建第三个。

请解决这个问题?

谢谢, 理查德。

【问题讨论】:

  • 你试过一次创建一个目录吗?
  • 请原谅我的无知,但 @ 符号是干什么用的?此外,该脚本对我有用......也许还有其他事情正在进行中。
  • 也不起作用。刚试过。创建第一个,但在第二个和第三个上发生相同的情况。
  • @是删除错误信息。

标签: php permissions file-permissions mkdir


【解决方案1】:

这解决了问题:

$a = @mkdir("photos/$cat/", 0777);
    @chmod("photos/$cat/", 0777);
    $b = @mkdir("photos/$cat/$sku/", 0777);
    @chmod("photos/$cat/$sku/", 0777);

但是为什么不能在 mkdir 上使用递归呢?

【讨论】:

    【解决方案2】:

    我这样做了,效果很好:

        if (!is_dir($path)) {
            $dirs = explode('/', $path);
            $i = 0;
            $subdir = '';
            foreach ($dirs as $dir) {
                if($i > 0){$dir = '/' . $dir;}
                $subdir .= $dir;
                if(!is_dir(DIR_CACHE . $subdir)){@mkdir(DIR_CACHE . $subdir);@chmod(DIR_CACHE . $subdir, 0777);}
    
                $i++;
            }
        }
    

    所以你所要做的就是定义你的路径( $path = photos/$cat/$sku )

    【讨论】:

      【解决方案3】:

      由于用户权限问题,请在使用 mkdir 函数创建任何目录时检查用户,

      【讨论】:

      • 但它创造了第一个,为什么不创造其余的?
      • 你在第一个创建的目录中创建子目录吗??
      【解决方案4】:

      您是否尝试过chmoding 目录?

      mkdir("photos/$cat", 0777, true);
      chmod("photos", 0777);
      chmod("photos/$cat", 0777);
      mkdir("photos/$cat/$sku", 0777);
      chmod("photos/$cat/$sku", 0777);
      

      【讨论】: