ホームページ  >  記事  >  バックエンド開発  >  php ディレクトリに対する mkdir および mkdirs の操作_PHP チュートリアル

php ディレクトリに対する mkdir および mkdirs の操作_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:42:291386ブラウズ

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

2012-09-09 17:50:58| カテゴリ: デフォルト カテゴリ

関数 mkdirs($dir)
{
if(!is_dir($dir))
{
if(!$this->mkdirs(dirname($dir))){
false を返します;
}
if(!mkdir($dir,0777)){
false を返します;
}
}
chmod($dir, 777); //ディレクトリ操作権限を与える
true を返します。 }

最初は、パスが指定されていれば mkdir でフォルダーを作成できると思っていましたが、そうではありません。1 つの mkdir では 1 レベルのディレクトリのみを作成でき、複数レベルのディレクトリは作成できません。

では、mkdir を使用してそれを作成するにはどうすればよいでしょうか?まず、マニュアルから次のように mkdir の説明をコピーしましょう:

bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )

パス名で指定された新しいディレクトリを作成してみます。

モードを 8 進数として指定することもできます。これは、数値がゼロで始まる必要があることを意味します。モードは現在の umask によっても変更されます。これは umask() で変更できます。

注: Windows ではモードは無視されます。 PHP 4.2.0 以降はオプションです。

デフォルトのモードは 0777 で、これは可能な最大アクセスを意味します。モードの詳細については、chmod() ページを参照してください。 例 1. mkdir() の例

mkdir("/path/to/my/dir", 0700); ?>

成功した場合は 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 を使用してマルチレベルの親を生成する)

リーリー

php ディレクトリに対する mkdir および mkdirs の操作_PHP チュートリアル 説明: php ディレクトリに対する mkdir および mkdirs の操作_PHP チュートリアル

1. まず、mkdir() と mkdirs()、および is_dir と dirname() の違いについて簡単に説明します。

mkdir() は既存のディレクトリ内にのみフォルダーを作成できます (つまり、親が存在する必要があります)。

mkdirs() は、存在しないディレクトリにフォルダーを作成できます。例: a\b では、複数レベルのディレクトリを作成できます。

dirname() はパスのディレクトリ部分を返します。

is_dir() は、指定されたファイル名が有効なディレクトリであるかどうかを判断するために使用されます

2. 一般的なプロセスは次のとおりです:

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

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

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

2番目のタイプ

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

リーリー

説明:

一般的なプロセス:

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

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

概要:

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

2. 自分で書いた方法では、mkdirsを使って多階層の親ディレクトリを作成します

3. mkdir を使用すると、複数レベルのフォルダーを非常に賢く作成できます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/635024.html技術記事 PHP で mkdir を使用して複数レベルのディレクトリを作成する方法 2012-09-09 17:50:58| カテゴリ: デフォルト カテゴリ 関数 mkdirs($dir) { if(!is_dir($dir)) { if(!$this- >mkdirs (dirname($dir))){ return false...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。