AWSでcomposer installしたら[RuntimeException] /var/www/develop/snakle/vendor does not exist and could not be created. がでた
vendorフォルダが生成できないというエラー
Laravelで作ったプロジェクトなので、EC2の環境構築の際に、composer installをすることで開発環境と同じバージョンのLaravelをインストールしようとしたのですが、
[RuntimeException] /var/www/develop/snakle/vendor does not exist and could not be created.
というエラーが出てしまいました。
直訳すると、
/var/www/<適当なパス名>vender が存在しないか、生成されることができませんでした。
ということになりますかね。
vendorフォルダとは?
この /var/www/<適当なパス名>/vender
というのは、中略していますが、ここまででひとくくりで、フォルダパスです。
vendor
というフォルダは、Laravelのプロジェクトフォルダの直下にあるもので、Laravelで開発している人なら見慣れているものですよね。
Laravelがインストールされると必然的に作られて、依存性のあるプログラムやモジュールを入れておいてくれるフォルダ、という理解です。
解決法
こちら、エラーの文字列そのままググったところ、良いのが出てきました。
同じエラーに当たった人が投稿したフォーラムの記事ですが、ベストアンサーの人の答えで、
Your folder (var/www) probably is read-only or has not enough rights. for a quick fix, try chmod -R 777
と書いてくれている人がいました。
要するに、フォルダの書き込み禁止に引っかかって、composerが vendor
フォルダを自動生成しようとしたけどできなかった、ということだと思います。
ただ何かとむやみに、 777
権限をつけてしまうのは良くないので、 755
くらいでいいと思います。
権限管理について 777
の意味がわからない人は、詳しくは、こちらの記事を参照のこと。(初心者向けです)
結果
私は、vendorフォルダの直上のプロジェクトのフォルダの権限を変更したところ、 composer install
が通るようになりました。
以上。
後日追記(2018/10/19)
AWSのLAMPインストールのためのチュートリアルで、ec2-userに権限を与えるために、apacheと同じグループに入れて権限設定する方法が書かれていました。