web-dev-qa-db-ja.com

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

もちろん、ディレクトリは存在しません。混乱した!

34
rpsep2

文字列にエラーがあります:

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

する必要があります:

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

ファイルシステムに_images/listing-images/rent_パスが存在しないために発生します。

パス全体を作成する場合は、3番目の引数をtrueとして渡すだけです。

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

現在、間違ったディレクトリにいる可能性もあります。この場合-chdir()を使用して現在のディレクトリを変更するか、フルパスを指定する必要があります。

92
zerkms

PHP> 5.0.0を使用している場合、mkdir("path", 0777, true);を試して、再帰的にディレクトリを作成できるようにしてください(こちらを参照してください: http://php.net/manual /en/function.mkdir.php )。

13
adamdunson
  • 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
    }
}
0
Ramyz

おそらく本当のエラーは、彼が余分な頂点を忘れたことでした。

この:

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

内部:

/'.$insertID."

正しいバージョン:

/".$insertID

拡張正しいバージョン:

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

私の場合、$ insertIDは、連結することにより、いくつかのデータから文字列として生成されました

$insertID=$year.$otherId;

私はこのようなコードを簡単に書き直し、エラーが消えました:

$insertID=(int)($year.$otherId);
0
user3410311