質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

3809閲覧

phpでディレクトリが作成されない

aushijima

総合スコア55

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/11/07 03:40

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

良かったら教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2018/11/07 03:46 編集

このままのコードだとしたら、recursiveがtureとtypoしているので動作しないはず。mkdirはboolをかえすので、とりあえずlogger(mkdir($filepath, 0777, true))をしてみてはどうでしょうか?
yambejp

2018/11/07 03:49

CLIでやっているのでしょうか?実行ユーザーは当該ディレクトリへフルアクセスできる権限をもってますか?
aushijima

2018/11/07 04:57

web上で登録ボタンを押した時にログを埋め込んでから、確認しているので画面上でボタン押下した際に確認していますね。
aushijima

2018/11/07 05:00

logger(mkdir($filepath, 0777, true))を仕込んでみましたが、何もログには、出ていないですね。
papinianus

2018/11/07 05:05

yoppy0066様につけたコメントを拝見すると権限だと思いますが、loggerが出す時刻部分も出てないということでしょうか?falseが空文字になるなら分かりますが…
aushijima

2018/11/07 05:08

[2018-11-07 14:02:12] のように時刻は、出ていました。そこで改行が入っていたので空文字になっているみたいです。
papinianus

2018/11/07 05:15

ini_set('display_errors', 1); error_reporting(E_ALL);を冒頭に追記して、エラーを見てみては?権限がなければE_WARNINGになるので
aushijima

2018/11/07 05:27

Warning: mkdir(): Permission denied in /var/www/html/xxxcorp.xyz/xxx-groupwork_ushijima/library/Model/Chat.phpのエラーが出ました。権限みたいです。
guest

回答3

0

ベストアンサー

このphpを実行させるときに

/var/www/html/xxxcorp.xyz/xxx-groupwork_ushijima/view/img/themeimg

までのどこまでのディレクトリが存在しているかわかりませんが、
新たにディレクトリを作成するところに書き込みの権限がないのだと思います。

追記

phpを実行させてみると、webサーバ(当方の環境はnginx)のエラーログにPermission deniedと記録されました。

PHP message: PHP Warning: mkdir(): Permission denied in /www/home/test/html/test.php on line 38

作成したいディレクトリに書込み権限追加後は、エラーなく新規ディレクトリを作成できました

投稿2018/11/07 05:15

編集2018/11/07 05:29
yukky1201

総合スコア2751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aushijima

2018/11/07 05:17

/var/www/html/xxxcorp.xyz/xxx-groupwork_ushijima/view/img/ ここまでは、ディレクトリがありますね。
aushijima

2018/11/07 05:20

確認したら、imgのディレクトリは、775でした。
yukky1201

2018/11/07 05:26

これでは、どのユーザが7でどのグループが7かわかりません。(その他は5だとわかりました。(この時点でその他ユーザ(たぶんapacheユーザなのだと思います)に書き込み権限がないせい)) # ls -ld /var/www/html/xxxcorp.xyz/xxx-groupwork_ushijima/view/img を実行、結果をそのまま追記ください。
aushijima

2018/11/07 05:29

ls: cannot access /var/www/html/xxxcorp.xyz/xxx-groupwork_ushijima/view/img: No such file or directory とでました。
yukky1201

2018/11/07 05:31

・imgのディレクトリはある ・No such file or directory は矛盾するので、そちらで確認ください
yukky1201

2018/11/07 05:35

「~/imgディレクトリの権限を正確に確認したいです」というのがこちらからのお願いごとです
aushijima

2018/11/07 05:37

viewのディレクトリで実行したら、 ls: cannot access /var/www/html/xxxcorp.xyz/xxx-groupwork_ushijima/view/img: No such file or directory 権限がありませんと言われました。
yukky1201

2018/11/07 05:41

実際のフルパスが違いませんか?xxxcorp.xyzのxxxは伏字に変更したりしていませんか? viewディレクトリまで移動されているのでしたら、ls -ldの個別ディレクトリ確認ではなく、ls -l(カレントディレクトリのリストを参照する)で結構です
aushijima

2018/11/07 05:48

drwxrwxr-x 3 xxxuser xxxuser 22 Oct 18 15:51 imgでした。 確認したら、xxxcorp.xyzは、伏せ字にはなっていませんでした。
yukky1201

2018/11/07 05:54

xxxuserユーザ:rwx xxxuserグループ:rwx その他:r-x ですので、 ブラウザでphpにアクセス →apache(ですよね)ユーザがphpの実行者になる →その他には書込み権限ないので、permission denied となっています。 案1)その他に書き込み権限を付与する 案2)ディレクトリのownerをapache:apacheにする のどちらかで解決すると思います
aushijima

2018/11/07 06:00

ありがとうございます。今mkdirする前にその他の方の権限を書き込みできるように修正して、実行した所無事にディレクトリが作成されました。
guest

0

mkdir(THEME_IMAGE,0777)

で権限なくてエラーになってる気がします。

$ ls /var/www/html/xxxcorp.xyz/xxx-groupwork_ushijima/view/img/themeimg/59

で、ディレクトリ作成できてる確認してみてはいかがでしょうか

投稿2018/11/07 03:56

yoppy0066

総合スコア293

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aushijima

2018/11/07 04:54

今見てみた所ディレクトリは、作成されていないですね。
guest

0

recursive が怪しそうですね。
あんまり意味ないけど、mkdir の返り値も確かめてみては?

投稿2018/11/07 03:52

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問