いつかのために

自作サイトができるまで、メモ置き場として使っているブログ

Vagrantで作った環境だと権限変更してもPermission deniedが出てしまった

※途中で日付設定を変更したのですが、本筋と関係ないので省きます。

本番環境とほぼ同様にLaravel導入できたし、さっそくアクセスするぞ~ととりあえずpublicにアクセスしてみたら
http://192.168.33.10/laravel/public/

The stream or file "/var/www/html/laravel/storage/logs/laravel-2019-01-05.log" could not be opened: failed to open stream: Permission denied

と左上に書かれたページが

f:id:sheefelt:20190106135206p:plain

この画面はLaravelのエラー画面なので、Laravelを入れることには成功してそうなのですが、

Permissionということは権限エラー?

ここでいったんLaravelの公式ドキュメントを見てみます。

インストール 5.7 Laravel

ディレクトパーミッション

Laravelをインストールした後に、多少のパーミッションの設定が必要です。storage下とbootstrap/cacheディレクトリをWebサーバから書き込み可能にしてください。設定しないとLaravelは正しく実行されません。Homestead仮想マシンを使用する場合は、あらかじめ設定されています。

なるほど?
指示に従って、storagebootstrap/cache配下をすべて権限変更してみます。
開発環境なので、特定のグループに属していれば書き込み可能としてしまいます。
私の場合はApacheがWebサーバになるので、storagebootstrap/cacheの所有グループにapacheを追加してあげればいいはずです。

pwd

/var/www/html/laravel

ll

ll
total 444
drwxrwxr-x.  6 vagrant vagrant   4096 Dec 16 18:37 app
-rw-rw-r--.  1 vagrant vagrant   1686 Dec 16 18:37 artisan
drwxrwxr-x.  3 vagrant vagrant   4096 Dec 16 18:37 bootstrap
-rw-rw-r--.  1 vagrant vagrant   1550 Dec 16 18:37 composer.js
-rw-rw-r--.  1 vagrant vagrant 177474 Dec 16 18:37 composer.lo
drwxrwxr-x.  2 vagrant vagrant   4096 Dec 16 18:37 config
drwxrwxr-x.  5 vagrant vagrant   4096 Dec 16 18:37 database
-rw-rw-r--.  1 vagrant vagrant   1125 Dec 16 18:37 package.jso
-rw-rw-r--.  1 vagrant vagrant   1138 Dec 16 18:37 phpunit.xml
drwxrwxr-x.  5 vagrant vagrant   4096 Dec 16 18:37 public
drwxrwxr-x.  6 vagrant vagrant   4096 Dec 16 18:37 resources
drwxrwxr-x.  2 vagrant vagrant   4096 Dec 16 18:37 routes
-rw-rw-r--.  1 vagrant vagrant    563 Dec 16 18:37 server.php
drwxr-xr-x.  5 vagrant vagrant   4096 Dec 16 18:37 storage
drwxrwxr-x.  4 vagrant vagrant   4096 Dec 16 18:37 tests
drwxrwxr-x. 45 vagrant vagrant   4096 Dec 16 18:45 vendor
-rw-rw-r--.  1 vagrant vagrant    537 Dec 16 18:37 webpack.mix
-rw-rw-r--.  1 vagrant vagrant 205286 Dec 16 18:37 yarn.lock

storagebootstrap/cacheの所有グループはvagrantのようですね。
では、apacheの所属グループを確認してみましょう。

groups apache

apache : apache

apacheグループのみのようなのでvagrantを追加します。
usermod -aG apache vagrant
groups apache

apache : apache vagrant

最後に、所有グループにも書き込み権限を付与します。
sudo chmod -R 775 bootstrap/cache/
sudo chmod -R 775 storage
ll 以下抜粋

drwxrwxr-x.  3 vagrant vagrant   4096 Dec 17 03:37 bootstrap
drwxrwxr-x.  5 vagrant vagrant   4096 Dec 17 03:37 storage

権限変わってますね!
これで当初の権限エラーも直ってるはず!

思っていたのですが、

The stream or file "/var/www/html/laravel/storage/logs/laravel-2019-01-05.log" could not be opened: failed to open stream: Permission denied

同じエラーが出ます。
もしかするとVagrantで共有フォルダをしっかり決めていないことが原因?と思ったので、次の記事に続きます。
解決方法までまとめられずに申し訳ありません……。

追記

CentOS7.4上でLaravelプロジェクトを動かすための環境を作る - Qiita

こちらの記事の手順で実行することで、成功しました…!
ありがとうございます。
chconコマンドが大切なようですね……。
詳しいことが分かり次第、別記事でまとめます。