PHP mkdir()で再帰的にディレクトリを作成する方法

画像のアップロードフォームなどでユーザーのIDや日付など存在しない深い階層のディレクトリをmkdir()関数で再帰的に作成する方法のメモです。

成功するコード

<?php
$path = "./tmp/user1/comment1";
mkdir( $path, 0777, true );

失敗するコード1

<?php
$path = "./tmp/user1/comment1";
mkdir( $path, 0777 );
Warning: mkdir(): No such file or directory in /home/xxxxxx/public_html/tmp/test.php on line 3

第3引数に「true」を指定しない場合、上記のようにエラーとなります。

失敗するコード2

<?php
$path = "./tmp/user1/comment1";
mkdir( $path, '0777', true );
Warning: mkdir(): Permission denied in /home/xxxxxx/public_html/tmp/test.php on line 3

一見問題なさそうなコードですが、第2引数のパーミッションの指定のところをシングルクォーテーションで括ってしまっていたためエラーとなります。

動作環境情報

エックスサーバー(x10)
PHP 7.3.16

コメント

タイトルとURLをコピーしました