PHPで、mkdir関数を使いサーバー上のディレクトリを作成する方法について説明します。
例えば、プログラムの処理中にログ出力などを実施する場合に、ディレクトリが無いために異常終了してしまうということがあります。そのようなエラーを避ける、ディレクトリが存在しない場合はディレクトリを作るといった処理が必要となります。
mkdir関数の書式
1 |
mkdir( "作成ディレクトリ" [, パーミッション設定 [, TRUE | FALSE, [ コンテキスト ]]]) |
作成ディレクトリ名を指定することでディレクトリを作成します。
オプションで第2引数にディレクトリのパーミッション設定、第3引数に上位ディレクトリが存在しない場合の設定を指定できます。
上位ディレクトリが存在しない場合
第3引数にTRUEを指定すると、上位ディレクトリが存在しない場合に自動的に作成してくれます。デフォルトではFALSEなので、注意してください。
1 2 |
$path = "/test1/test2/test3" mkdir($path, '0777',TRUE); |
プログラム処理中に上位ディレクトリが存在しているか確認するのは大変です。階層が深いと大変になるので、該当ディレクトリの存在チェックを実施し、存在しない場合に上記のように第3引数をTRUEに設定しディレクトリを作成しておくと良いでしょう。
mkdirでのパーミッション設定は要注意
mkdir関数の第2引数にパーミッションを指定できるのですが、実はその通り設定されないことがあります。
パーミッションを明示的に指定したい場合は、mkdir実行後にchmod関数を使用して変更しておくことをおすすめします。省略した場合は、実行ユーザーのumask設定に従うようです。