ホームページ > バックエンド開発 > PHPチュートリアル > PHP での mkdir の使用の概要

PHP での mkdir の使用の概要

王林
リリース: 2023-04-08 11:54:01
転載
3402 人が閲覧しました

PHP での mkdir の使用の概要

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));
 }
ログイン後にコピー

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

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

概要:

1. PHP5 に付属の mkdir で新しいパラメータ recursive を使用します。 recursive を true に設定すると、ディレクトリを再帰的に作成するという目的を達成できますが、PHP4 の場合は問題ありません。それはうまくいきません。

2. 私が書いた方法では、mkdirs を使用して複数レベルの親ディレクトリを作成します

3. それでも mkdir を使用して非常に賢く作成します

おすすめの関連記事チュートリアル:

php チュートリアル

以上がPHP での mkdir の使用の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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