PHP创建目录(错误:没有这样的文件或目录)?

时间:2017-04-29 11:21:58

标签: php

我在我的php中遇到一个小问题,我试图创建一个目录但是当代码运行时我收到错误消息

  

警告:mkdir()[function.mkdir]:没有这样的文件或目录

任何人都可以给我一些关于我在哪里出错的指导吗?

<?
    function generateRandomString($length = 10) {
        $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $charactersLength = strlen($characters);
        $randomString = '';
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, $charactersLength - 1)];
        }
        return $randomString;
    }

    $Key = generateRandomString();

    if(is_dir("Server1/".$Key) === true){
        header("Refresh:0");
    }
    else
    {
        mkdir("Server1/".$Key);
        echo $Key;
    }

?>

3 个答案:

答案 0 :(得分:1)

根据documentation

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

您需要将递归设置为true:

  

递归

     

允许创建路径名中指定的嵌套目录。

或者,如果您希望子路径存在,您可能需要检查路径是否正确。

答案 1 :(得分:0)

if(is_dir("Server1/".$Key) === true){
    header("Refresh:0");
}
else
{
    mkdir("Server1/".$Key);
    echo $Key;
}

当目录"Server1/".$Key不存在时,is_dir()的调用失败,但当目录Server1不存在时,它也失败。

另一方面,默认情况下,mkdir()在不存在时不会创建中间目录。如果目录Server1不存在,则is_dir()将返回FALSEmkdir()将失败,并显示错误消息“No such file or directory”。

这是有道理的,因为为了创建目录"Server1/".$Key,它必须首先进入"Server1/"目录并在其中创建子目录$Key

您可以将TRUE作为mkdir()的第三个参数传递来使其发挥作用:

mkdir("Server1/".$Key, 0777, TRUE);

答案 2 :(得分:0)

如果你的php脚本在“Server1”目录中,你不想在mkdir中使用“Server1”......

只需使用     MKDIR($密钥);