Laravelを使ってアプリケーションを開発してみようと考えました
仕事でPHP + MySQLで小さいシステムを開発することになったのですが、NOフレームワークだとちょっと開発時間がかかってしまうので、フレームワークを導入しようと思いました。調べたら、CakePHPとか、FuelPHPとか、Laravelが出てきたので、最近人気上昇中のLaravelを使ってみることにしました。ただ、新規で開発しようとしたら、いろんなところでハマったので、メモを残しておくことにしました。
開発環境
- PHP7.2
- apache2
- Docker(php:7.2-apache)
- Laravel 6.5.0
LaravelのWelcome画面が表示されるまでのハマりポイント
vendor/autoload.php): failed to open stream: No such file or directory
最初に、以下のコマンド
$ laravel new
を、実行して、Laravelプロジェクトを作り、
$ docker-compose up -d
なんてことをすると、画面にはきれいなwelcome画面ではなく、autoload.phpがないというログが表示されます。原因は、public/index.phpから読み込まれるautoload.phpがないからですが、自分で実装するわけではありません。
解決策
以下のコマンドのどちらかを実行すると自動で生成されて解決します。(composerがインストールされていなければいけない)
$ composer update
$ composer install
No application encryption key has been specified.
これは画面上は500としか表示されないので、所見ではわかりませんが、Laravelのログを見るとエラーメッセージが出力されています。
初期値では、Laravelのログはstorage/logsに出力される。
初期値の状態で動作させると、apache2のログには出力されないので、困ったのですが、調べてみると、storage/logsディレクトリが作られて、laravel-YYYY-MM-DD.logに出力されています。
解決策
このログが出力されたときは、Encription Keyを生成します。以下のコマンドをappディレクトリで実行すると、.envの設定を書き換えてくれます。(コピーはしなくても良いかもしれませんが、本来はコピーして使うようなので…)
$ cp -p .env.sample .env
$ php artisan key:generate
すると、.envにキーが保存され、正常なwelcome画面が表示されます。
参考資料
https://qiita.com/pugiemonn/items/3d000ac0486987dd92df
https://qiita.com/ponsuke0531/items/197c76fcb9300d7c5f36
Disclaimer
- この記事は個人的なものです。私の雇用者とは全く関係はありません。(一応つけておきます)