phpでディレクトリがない時にディレクトリを作成したいのですが、なぜか作成できません。
// ログに残す logger('他のテーブルに渡すグループチャット番号'.$tmpChatNo); //画像のパスを指定する $fileName = $tmpChatNo; $filepath = THEME_IMAGE.'/'.$fileName; // ログに残す logger('グループチャットがあげられている大本のパスが正しいか確認'.THEME_IMAGE); //ディレクトリが作成されていない場合、新規で作成する if(!file_exists(THEME_IMAGE)){ logger('処理には入っている'); mkdir(THEME_IMAGE,0777); chmod(THEME_IMAGE,0777); } // ログに残す logger('ファイルパスの指定がただしいか確認'.$filepath); //グループチャット番号のディレクトリを作成する mkdir($filepath,0777,ture); chmod($filepath,0777);
ログなどもはかせてみましたが、変数や定数の値などは、とれているようです。
[2018-11-07 12:21:41] 他のテーブルに渡すグループチャット番号59 [2018-11-07 12:21:41] グループチャットがあげられている大本のパスが正しいか確認/var/www/html/xxxcorp.xyz/xxx-groupwork_ushijima/view/img/themeimg [2018-11-07 12:21:41] 処理には入っている [2018-11-07 12:21:41] ファイルパスの指定がただしいか確認/var/www/html/xxxcorp.xyz/xxx-groupwork_ushijima/view/img/themeimg/59
良かったら教えてください。
このままのコードだとしたら、recursiveがtureとtypoしているので動作しないはず。mkdirはboolをかえすので、とりあえずlogger(mkdir($filepath, 0777, true))をしてみてはどうでしょうか?
CLIでやっているのでしょうか?実行ユーザーは当該ディレクトリへフルアクセスできる権限をもってますか?
web上で登録ボタンを押した時にログを埋め込んでから、確認しているので画面上でボタン押下した際に確認していますね。
logger(mkdir($filepath, 0777, true))を仕込んでみましたが、何もログには、出ていないですね。
yoppy0066様につけたコメントを拝見すると権限だと思いますが、loggerが出す時刻部分も出てないということでしょうか?falseが空文字になるなら分かりますが…
[2018-11-07 14:02:12] のように時刻は、出ていました。そこで改行が入っていたので空文字になっているみたいです。
ini_set('display_errors', 1); error_reporting(E_ALL);を冒頭に追記して、エラーを見てみては?権限がなければE_WARNINGになるので
Warning: mkdir(): Permission denied in /var/www/html/xxxcorp.xyz/xxx-groupwork_ushijima/library/Model/Chat.phpのエラーが出ました。権限みたいです。

回答3件
あなたの回答
tips
プレビュー