mkdirを使用してPHPで複数レベルのディレクトリを作成する方法

WBOY
リリース: 2016-07-25 09:02:59
オリジナル
1024 人が閲覧しました
  1. mkdir("/path/to/my/dir", 0700);
  2. ?>
コードをコピー

成功した場合は 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 の新しいメソッドを使用する PHP5 のディレクトリ作成関数 mkdir は、新しいパラメータ recursive を追加します。 recursive を true に設定すると、ディレクトリを再帰的に作成する目的を達成できますが、これは PHP4 では機能しません。

2. マルチレベルのディレクトリを作成するための独自の再帰メソッドを作成します。 ここで、2 番目の方法について少し説明します。以下の 2 つの方法があります。 最初のもの (mkdirs を使用してマルチレベルの親を生成する)

  1. function mkdirs($dir, $mode = 0777)
  2. {
  3. if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE;
  4. if ( !mkdirs(dirname($dir), $mode)) return FALSE;
  5. return @mkdir($dir, $mode);
  6. }
コードをコピー

手順: 1. まず、mkdir() と mkdirs()、および is_dir と dirname() の違いについて簡単に説明します。 mkdir() は既存のディレクトリ内にのみフォルダーを作成できます (つまり、親が存在する必要があります)。 mkdirs() は、存在しないディレクトリにフォルダーを作成できます。例: a\b では、複数レベルのディレクトリを作成できます。 dirname() はパスのディレクトリ部分を返します。 is_dir() は、指定されたファイル名が有効なディレクトリであるかどうかを判断するために使用されます

2. 一般的なプロセスは次のとおりです。 (1) まず is_dir を使用して、それがすでにフォルダーであるかどうかを判断し、フォルダーである場合は TRUE を返します。存在しない (またはフォルダーではない) 場合は、作成を試みます。もちろん、親が存在しない可能性があり、mkdir は正常に作成されませんが、エラーは報告されないため、@ を使用して非を抑制します。致命的なエラー。

(2) 渡されたパラメータがどれも条件を満たしていない場合は、最初にパスのディレクトリ部分を取得します。もちろん、それは存在しないマルチレベルの親である可能性があるため、mkdirs( ) を使用して最初に作成し、成功した場合は (失敗した場合は FALSE を返します)、次に mkdir を使用して最終ディレクトリを作成します。

さて、上記が最初のオプションです。

2番目のタイプ (注: このソリューションは非常に合理化されており、非常に優れたソリューションです。使用することをお勧めします)

  1. function create_folders($dir){
  2. return is_dir($dir) または (create_folders(dirname($dir)) および mkdir($dir, 0777));
  3. }
コードをコピーします

手順: 一般的なプロセス: パスを取得した後、まずそれが有効なファイル ディレクトリであるかどうかを判断し、有効な場合はプログラムに戻って終了します。そうでない場合 (ここでは選択条件として OR が使用されているため、つまり条件の 1 つが満たされている限り)、それ自体が再帰的に呼び出され、渡されたパス内のディレクトリが 1 つ少なくなります。このように、まず上位階層の親ディレクトリに戻り、mkdirを使って次階層を作成します。

さて、上記は PHP を使用してフォルダー (および複数レベルのフォルダー) を作成する方法です。 ^_^

概要: 1. PHP5 に付属の mkdir で新しいパラメータ recursive を使用します。 recursive を true に設定すると、ディレクトリを再帰的に作成する目的を達成できますが、これは PHP4 では機能しません。 2. 私が書いた方法では、mkdirs を使用して複数階層の親ディレクトリを作成します。 3. mkdir を使用すると、複数レベルのフォルダーを非常に賢く作成できます。



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート