PHPmkdir が複数レベルのディレクトリを作成する方法
まず最初に、多くの友人が mkdir が同じ長さのファイルを作成できると考えているかもしれないことを説明しましょう。フォルダーは、実際にはそのようなものではありません。単一の MKDIR は 1 レベルのディレクトリのみを作成できますが、複数レベルのディレクトリは作成できません。では、mkdir を使用してフォルダーを作成するにはどうすればよいでしょうか?
マニュアルの mkdir の説明は次のとおりです。
手順
bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )
パス名で指定した新しいディレクトリを作成してみます。
注: 8 進数を使用してモードを指定することもできます。つまり、数値はゼロで始まる必要があります。モードは現在の umask によっても変更されます。これは umask() で変更できます。
注: Windows ではモードは無視されます。 PHP 4.2.0 以降はオプションです。
デフォルトのモードは 0777 で、これは可能な限り最大のアクセスを意味します。モードの詳細については、chmod() ページを参照してください。
(推奨される無料の学習ビデオ チュートリアル: php ビデオ チュートリアル)
例 1. mkdir() の例
<?php mkdir("/path/to/my/dir", 0700); ?>
成功した場合は TRUE を返し、失敗した場合は TRUE を返します。 FALSEを返します。
注: PHP 5.0.0 以降、rmdir() は特定の URL ラッピング プロトコルでも使用できます。 rmdir() がサポートする URL カプセル化プロトコルのリストについては、付録 N を参照してください。
注: コンテキストのサポートは PHP 5.0.0 で追加されました。コンテキストの説明については、「リファレンス CLX、ストリーム関数」を参照してください。
注: 再帰パラメータは PHP 5.0.0 で追加されました。
注: セーフ モードがアクティブになると、PHP は操作されているディレクトリが実行されているスクリプトと同じ UID (所有者) を持つかどうかを確認します。
上記は、PHP5 マニュアルの記述情報です。つまり、mkdir('./test',0777) のようなフォルダーを作成できます。しかし、複数レベルのディレクトリを再帰的に作成するにはどうすればよいでしょうか?
メソッドは次のとおりです:
1. PHP5 のディレクトリ作成関数 mkdir は、新しいパラメーター recursive を追加します。 recursive を true に設定することで、ディレクトリを再帰的に作成するという目的は達成できますが、 PHP4 では動作しません。
2. 独自の再帰メソッドを作成して、複数レベルのディレクトリを作成します。
ここでは 2 番目の方法について説明します。以下の 2 つの方法があります:
1 つ目 (mkdirs を使用して複数レベルの親を生成する)
function mkdirs($dir, $mode = 0777) { if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE; if (!mkdirs(dirname($dir), $mode)) return FALSE; return @mkdir($dir, $mode); }
説明:
1. まず、mkdir() と mkdirs()、および is_dir と dirname() の違いについて簡単に説明します:
mkdir() は既存のディレクトリにのみファイルを作成できます。 (つまり、親がそれを持っている必要があります)。
mkdirs() は、存在しないディレクトリにフォルダーを作成できます。例: a//b では、複数レベルのディレクトリを作成できます。
dirname() は、返されたパスのディレクトリ部分です。
is_dir() は、指定されたファイル名が有効なディレクトリであるかどうかを判断するために使用され、フォルダーである場合は TRUE を返します。存在しない (またはフォルダーではない) 場合は、作成してみてください。もちろん、親が存在しない可能性があります。その場合、mkdir は正常に作成されませんが、エラーは報告されません。そのため、@ を使用して非を抑制します。 -致命的なエラー。
(2) 渡されたパラメータのいずれも条件を満たさない場合は、2 番目の if ステートメントを入力します。まず、パスのディレクトリ部分を取得します。もちろん、それは、条件を満たさないマルチレベルの親である可能性があります。 () が存在するため、最初に親を作成します。成功した場合 (失敗した場合は FALSE を返します)、mkdir を使用して最終ディレクトリを作成します。
わかりました。上記が最初のオプションです。 2 番目のタイプ (注: このソリューションは非常に合理化されており、非常に優れたソリューションなので、使用することをお勧めします)function create_folders($dir){ return is_dir($dir) or (create_folders(dirname($dir)) and mkdir($dir, 0777)); }
さて、上記は PHP を使用してフォルダー (および複数レベルのフォルダー) を作成する方法です。 ^_^
概要:
1. PHP5 に付属の mkdir で新しいパラメータ recursive を使用します。 recursive を true に設定すると、ディレクトリを再帰的に作成するという目的を達成できますが、PHP4 の場合は問題ありません。それはうまくいきません。
2. 私が書いた方法では、mkdirs を使用して複数レベルの親ディレクトリを作成します
3. それでも mkdir を使用して非常に賢く作成します
おすすめの関連記事チュートリアル:
php チュートリアル以上がPHP での mkdir の使用の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。