PHP mkdir问题!

3

我试图创建一些目录,如下所示:

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

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

有什么解决方法吗?

谢谢, Richard.


你尝试过逐个创建这些目录吗? - Steve Robillard
请原谅我的无知,@ 符号有什么用?另外,脚本在我这里运行正常……也许其他问题正在发生。 - Jukebox
也不起作用。刚试了一下。在第二个和第三个上也是一样的情况。 - richardalberto
@是用来移除错误信息的。 - richardalberto
4个回答

1

问题已解决:

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

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


1

我做了这个,它完美地运行:

    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)


0

你尝试过使用chmod更改目录的权限吗?

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

0
亲爱的,这是由于用户权限问题,请在使用mkdir函数创建任何目录时检查用户。

但它创建了第一个,为什么不创建其余的呢? - richardalberto
你是在第一个创建的目录中创建子目录吗? - Chirag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接