画像のアップロードフォームなどでユーザーの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
コメント