PHPでディレクトリを再帰的に作成するときのメモです。
‘dir1/dir2/dir3’のような深いディレクトリを一度で作成する場合はmkdirに第3引数にtrueをつけて使用します。
$dirName = 'dir1/dir2/dir3';
$defaultUmaskNum = umask();
umask(0);
mkdir($dirName,0755,true);
umask($defaultUmaskNum);
mkdirの第2引数はパーミッションの設定です。数値で指定します。’0755’などのように文字列で指定するとエラーは出なくとも、おかしなパーミッションになることがあります。
また、umaskはデフォルトのパーミッションの設定です。mkdirに第2引数からumaskの値を引いた値が設定されるので今回は便宜的に0にして、処理後に戻しています。
PHP公式ではパーミッションの設定はumaskを変更するのではなく、chmodが推奨されていますが、作成される全てのディレクトリのパーミッションを同時指定することはできません。