web-dev-qa-db-ja.com

PHPネストされたディレクトリを作成する

次の状況で2レベルのディレクトリを作成する関数のヘルプが必要です。

  1. 目的のサブディレクトリが親ディレクトリに存在します。何もしません。
  2. 親ディレクトリは存在しますが、サブディレクトリは存在しません。サブディレクトリのみを作成します。
  3. 親ディレクトリもサブディレクトリも存在しません。最初に親ディレクトリを作成し、次にサブディレクトリを作成します。
  4. いずれかのディレクトリが正常に作成されなかった場合は、FALSEを返します。

助けてくれてありがとう。

26
sunjie

mkdir() の3番目のパラメーターを使用します。

recursiveパス名で指定されたネストされたディレクトリの作成を許可します。デフォルトはFALSEです。

$path = '/path/to/folder/with/subdirectory';
mkdir($path, 0777, true);
58
KingCrunch

recursiveパス名で指定されたネストされたディレクトリの作成を許可します。でも私には効かなかった!!それがここに私が思いついたものです!!そしてそれは非常に完璧に動作します!!

$upPath = "../uploads/RS/2014/BOI/002";   // full path 
$tags = explode('/' ,$upPath);            // explode the full path
$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
Ramyz

file_exists を使用して、フォルダが存在するかどうかを確認し、is_dirで、フォルダかどうかを確認します。

 if(file_exists($dir) && is_dir($dir))

また、ディレクトリを作成するには、mkdir関数を使用できます

次に、あなたの質問の残りは、要件に合うようにこれを操作するだけです

3
Balanivash

mkdir 、特に$recursiveパラメーターを参照してください。

2
Artefacto

私がどれだけ苦しんだか..そしてこのスクリプトを手に入れました..

function recursive_mkdir($dest, $permissions=0755, $create=true){
    if(!is_dir(dirname($dest))){ recursive_mkdir(dirname($dest), $permissions, $create); }  
    elseif(!is_dir($dest)){ mkdir($dest, $permissions, $create); }
    else{return true;}
}
1
T.Todua

探している関数はMKDIRです。最後のパラメータを使用して、ディレクトリを再帰的に作成します。そして ドキュメントを読んでください。

0
monsieur_h

PHP 5.0+ mkdir の時点で、欠落している親を作成する再帰的なパラメーターがあります。

0
Simon
// Desired folder structure
$structure = './depth1/depth2/depth3/';

// To create the nested structure, the $recursive parameter 
// to mkdir() must be specified.

if (!mkdir($structure, 0744, true)) {
    die('Failed to create folders...');
}

Returns TRUE on success or FALSE on failure.

PHP:mkdir-マニュアル

0
Andi T