50

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

警告: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."); 
}

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

4

8 回答 8

124

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

如果您想创建整个路径 - 只需将第三个参数作为true

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

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

于 2013-02-21T21:08:10.323 回答
15

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

于 2013-02-21T21:09:36.057 回答
9

您的字符串中有错误:

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

应该:

mkdir("images/listing-images/rent/$insertID");
于 2013-02-21T21:06:03.077 回答
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
    }
}
于 2014-04-15T04:49:10.723 回答
0

在我的情况下 $insertID 是通过连接从一些数据作为字符串生成的

$insertID=$year.$otherId;

我像这样简单地重写了代码,错误消失了:

$insertID=(int)($year.$otherId);
于 2018-04-08T02:47:52.473 回答
0

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

这:

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

里面:

/'.$insertID."

正确版本:

/".$insertID

扩展正确版本:

mkdir("images/listing-images/rent/".$insertID);
于 2019-07-18T08:17:03.827 回答
0
$path = 'd:\path\to\my\file';
mkdir($path, null, true);

这是从 php 手册中复制的。最后一个参数“true”允许创建子文件夹

于 2021-10-03T17:38:16.060 回答
-2

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

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

已采取'。out,因为它看起来像一个语法错误,但你可能有正当理由保留它。

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

于 2013-02-21T21:11:47.783 回答