始める前に、多くの友人が私と同じように、パスを指定すれば mkdir でフォルダーを作成できると考えているかもしれないことを説明しておきます。単一の MKDIR は最初のレベルしか作成できません。複数のレベルでは機能しないので、mkdir を使用してそれを作成するにはどうすればよいですか?まず、マニュアルから mkdir の説明を次のようにコピーします。
説明
bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )
新しいものを作成してみるパス名で指定されたもの 目次
モードを 8 進数として指定することもできることに注意してください。これは、数値がゼロで始まる必要があることを意味します。このモードは現在の umask によっても変更されます。これは umask() で変更できます。
注: Windows ではモードは無視されます。 PHP 4.2.0 以降はオプションです。
デフォルトのモードは 0777 で、これは可能な限り最大のアクセスを意味します。モードの詳細については、chmod() ページを参照してください。 例 1. mkdir() example
<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span> ?php </span></span></li><li><span>mkdir("/path/<br />to/my/dir", 0700); </span></li><li class="alt"><span class="tag">?></span><span> </span></span></li></ol>
成功した場合は 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)のようなフォルダーを作成できます。しかし、複数レベルのディレクトリを再帰的に作成するにはどうすればよいでしょうか?
PHP でフォルダーを作成する方法は次のとおりです:
1 PHP5 のディレクトリ作成関数 mkdir は、 recursive を true に設定することで、ディレクトリを再帰的に作成する目的を達成できますが、PHP4 では機能しません。
2 マルチレベルのディレクトリを作成するための独自の再帰メソッドを作成します。
ここで、2番目の方法について少し説明します。以下の2つの方法があります:
最初のPHPは、フォルダーを作成します(mkdirsを使用して複数レベルの親を生成します)
<ol class="dp-xml"> <li class="alt"><span><span>function mkdirs($dir, $</span><span class="attribute">mode</span><span> = </span><span class="attribute-value">0777</span><span>) </span></span></li> <li><span>{ </span></li> <li class="alt"><span>if (is_dir($dir) || <br>@mkdir($dir, $mode)) <br>return TRUE; </span></li> <li><span>if (!mkdirs(dirname<br>($dir), $mode)) return FALSE; </span></li> <li class="alt"><span>return @mkdir($dir, $mode); </span></li> <li><span>} </span></li> </ol>
手順 : 1 まず、mkdir() と mkdirs()、および is_dir と dirname() の違いについて簡単に説明しましょう:
mkdir()
は既存のディレクトリにのみフォルダーを作成できます (つまり、親は1つ) )。
mkdirs()
は、存在しないディレクトリにフォルダーを作成できます。例: ab では、複数レベルのディレクトリを作成できます。
dirname() はパスのディレクトリ部分を返します。
is_dir() は、指定されたファイル名が有効なディレクトリであるかどうかを判断するために使用されます
2 一般的なプロセスは次のとおりです: (1) まず is_dir を使用して、それがフォルダーであるかどうかを判断し、フォルダーである場合は TRUE を返します。存在しない (またはフォルダーではない) 場合は、作成を試みます。もちろん、親が存在しない可能性があり、mkdir は正常に作成されませんが、エラーは報告されないため、@ を使用して非を抑制します。致命的なエラー。
(2) 渡されたパラメータがどれも条件を満たしていない場合は、最初にパスのディレクトリ部分を取得します。もちろん、それは存在しないマルチレベルの親である可能性がありますので、mkdirs。 () を使用して最初に親を作成します (成功した場合は FALSE を返します)。次に、mkdir を使用して最終ディレクトリを作成します。
わかりました、上記が最初のオプションです。
2 番目の PHP 作成フォルダー
(注: このソリューションは非常に合理化されており、非常に優れたソリューションです。使用することをお勧めします)
<ol class="dp-xml"> <li class="alt"><span><span>function create_folders($dir){ </span></span></li> <li><span>return is_dir($dir) or (<br>create_folders(dirname($dir)) <br>and mkdir($dir, 0777)); </span></li> <li class="alt"><span>} </span></li> </ol>
手順:
1 おおよそのプロセス:パスを取得したら、まずそれが有効なファイル ディレクトリかどうかを判断し、有効な場合はプログラムを終了して戻ります。そうでない場合 (ここでは選択条件として OR が使用されているため、つまり条件の 1 つが満たされている限り)、それ自体が再帰的に呼び出され、渡されたパス内のディレクトリが 1 つ少なくなります。このように、まず上位階層の親ディレクトリに戻り、mkdirを使って次階層を作成します。
さて、上記は PHP を使用してフォルダー (および複数レベルのフォルダー) を作成する方法です。 ^_^
PHP でのフォルダー作成の概要:
1 PHP5 に付属の mkdir で新しいパラメーター recursive を使用することで、 recursive を true に設定することで、ディレクトリを再帰的に作成する目的を達成できますが、これは機能しません。 PHP4の場合。
2 私が書いたメソッドでは、mkdirs を使用して複数レベルの親ディレクトリを作成します
3 まだ mkdir を使用して非常に賢く作成しています、