(PHP)ディレクトリを再帰的に作成


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が推奨されていますが、作成される全てのディレクトリのパーミッションを同時指定することはできません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

SPAM防止のため数字と漢数字の算数の計算をお願いします。 * Time limit is exhausted. Please reload CAPTCHA.