mkdir()说没有这样的目录并且失败了吗?

时间:2013-02-21 21:05:01

标签: php upload mkdir

我可能做了一些非常简单的错误,但是当我尝试创建一个目录(使用插入的变量作为最后一个文件夹名称执行)时,我收到错误:

  

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

代码:

if (!is_dir("images/listing-images/rent/'.$insertID.")) {
        //make new directory with unique id
   mkdir("images/listing-images/rent/'.$insertID."); 
}

当然目录不存在..我正在尝试现在制作它?困惑!

7 个答案:

答案 0 :(得分:90)

这是因为您的文件系统中没有images/listing-images/rent路径。

如果要创建整个路径 - 只需将第3个参数作为true传递:

mkdir('images/listing-images/rent/'.$insertID, 0777, true);

目前你也有可能在错误的目录中。如果是这种情况 - 您需要使用chdir()更改当前目录或指定完整路径。

答案 1 :(得分:13)

假设您正在使用PHP> 5.0.0,尝试mkdir("path", 0777, true);以递归方式创建目录(参见此处:http://php.net/manual/en/function.mkdir.php)。

答案 2 :(得分:6)

您的字符串中有错误:

mkdir("images/listing-images/rent/'.$insertID.");

应该是:

mkdir("images/listing-images/rent/$insertID");

答案 3 :(得分:0)

  • recursive允许创建在。中指定的嵌套目录 路径名称。
  • 但是对我不起作用!!因为这就是我想出来的!!
  • 它的工作非常完美!!
  

$ upPath =“../uploads/RS/2014/BOI/002”; //完整路径
  $ tags = explode('/',$ upPath); //爆炸完整路径
  $ mkDir =“”;

foreach($tags as $folder) {          
    $mkDir = $mkDir . $folder ."/";   // make one directory join one other for the nest directory to make
    echo '"'.$mkDir.'"<br/>';         // this will show the directory created each time
    if(!is_dir($mkDir)) {             // check if directory exist or not
      mkdir($mkDir, 0777);            // if not exist then make the directory
    }
}

答案 4 :(得分:0)

在我的情况下,$ insertID是通过concatinating

从一些数据生成的
sys.argv

我简单地重写了这样的代码并且错误消失了:

$insertID=$year.$otherId;

答案 5 :(得分:0)

可能真正的错误是他忘了一个额外的顶点。

此:

mkdir("images/listing-images/rent/'.$insertID.");

内部:

/'.$insertID."

正确版本:

/".$insertID

扩展的正确版本:

mkdir("images/listing-images/rent/".$insertID);

答案 6 :(得分:-2)

您不应该使用is_dir()来检查是否存在某些内容,您也需要使用file_exists()。尝试:

if (file_exists("images/listing-images/rent/$insertID") {
    mkdir("images/listing-images/rent/$insertID.");
}

采取了'。因为它看起来像语法错误,但你可能有合理的理由将其保留。

如果mkdir仍然失败,可能是images / listing-images / rent不存在,如果是这样,你必须单独创建。