質問: cakePHPを書籍で独学しています。 loclalhost:8765の内臓サーバで実行するとcakePHPのトップページへアクセスできるのですが、 XAMPPのhtdocsにアプリをコピーしてApacthで起動すると下記のようなエラーが出ます。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/5607d0f22c22fab2a1fe30f4890ca0b6.jpeg) 権限に関するエラーという認識なのですが、どうなのでしょうか? ご回答よろしくおねがい致します。 **試みたこと** ・エラー表示のある下記に読み書き実行の権限を全ユーザーに与えたが解消されなかった。 /Applications/XAMPP/xamppfiles/htdocs/cake3app/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php
回答: エラーメッセージをよく読んでください。 > > > Warning: file_put_contents(/Applications/XAMPP/xamppfiles/htdocs/cake3app/logs/error.log) [function.file-put-contents]: failed to open stream: Permission denied in /Applications/XAMPP/xamppfiles/htdocs/cake3app/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 129 > > > failed open stream になったファイルは、 **/Application/XAMPP/xamppfiles/htdocs/cake3app/logs/error.log** です。 ここに対して書き込もうとしているのが /Applications/XAMPP/xamppfiles/htdocs/cake3app/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php のソースコードなので、このソースコードのパーミッションを変更しても何の意味もありません。 この場合色々可能性があって、 1. /Application/XAMPP/xamppfiles/htdocs/cake3app/logs のグループが、Apache の動作するグループではないため、グループで書き込みできない 2. /Application/XAMPP/xamppfiles/htdocs/cake3app/logs に、グループの書き込み権限がない 3. /Application/XAMPP/xamppfiles/htdocs/cake3app/logs/error.log が存在しているが、所有者が Apache ではない 4. /Application/XAMPP/xamppfiles/htdocs/cake3app/logs/error.log が存在しているが、グループが Apache でない 5. /Application/XAMPP/xamppfiles/htdocs/cake3app/logs/error.log が存在していてグループが Apache だが、グループの書き込み権限がない 一度内蔵サーバで動かしたと言うことは、その時点で logs/error.log が作られていて、所有者とグループが内蔵サーバになっているはずです。そこに Apache で動かし直すと、所有者もグループも異なるので書き込みできなくなります。 other にも書き込み権限を与える(logs に o+rwx、logs/error.log に o+rw)手もありますが、誰でも書き込めてしまうのはあまりよろしくないですね。 すべてチェックしてみてください。