グローバルなHomesteadでLaravel環境構築
原因としてよくあるのが、GitHubなどで他人のリモートリポジトリからクローンしてきたLaravelのプロジェクトフォルダの場合、基本的に /vendor フォルダは個々の環境に依存してGitの管理下に置かれないため、このようなエラーの原因となることがあります。
このエラーはおそらく上述したようにlaravelを新たにインストールした場合ではなく、github等からlaravelベースのソースをcloneして配置した場合に起こるようです。
このエラーは composer install で一発解決。
$ composer install
再び上記ブログより。
コマンド入力後に諸々のファイルダウンロードが始まり、最終的に Package manifest generated successfully. と表示されれば成功です。 composer install をすることでprojectフォルダ内に vendor というフォルダが作成され、見つからないとアラートが出ていた /project/vendor/autoload.php のファイルも存在することになります。
Package manifest generated successfully.
composer install の一連の処理が成功し、「パッケージマニフェストが正常に生成されました」
目次
.envを新規作成する
再びビルトインサーバーを立ち上げる。
php artisan serve --host 192.168.10.10 --port 8000
サーバーは起動したが、ブラウザに「No input file specified.」と表示される。
Homestead.yaml の sites: で、パス指定を間違って、ファイルが見つからないだけだった。修正。
sites: - map: homestead.test to: /home/vagrant/code/dotinstall_myblog/myblog/public
ここで再びwebサーバー立ち上げようとしたが、今度は500エラーが!
.env ファイルがないのが原因だった。環境に依存する設定を記述する .env ファイルは、Git管理から外れているため、新規作成する必要がある。ドットインストールの、Laravel入門の動画でも、こんな事を言っていた。
.env ファイルには環境に依存するような設定値を書いておき、 config フォルダにあるファイルからは .env ファイルに書かれた値を参照するといった使い方をする。こうしておくと環境が変わった時に .env ファイルだけを差し替えればいいので便利。
.env.sample をコピーして .env を作成。
なお、.env のデータベース接続情報 DB_CONNECTION はデフォルトで mysql になっている。なので、データベースに SQLite を使ったプロジェクトの場合は、下記のようなエラーが出る。
SQLSTATE[HY000] [1045] Access denied for user ‘root’@’localhost’ (using password: NO) (SQL: select * from `posts` order by `created_at` desc)
その場合は、.env のデータベースに関する記述を mysql から sqlite に変える必要がある。
暗号キー作成
.env 新規作成したところで再び
$ php artisan serve --host 192.168.10.10 --port 8000
=>>>
RuntimeException
No application encryption key has been specified.
RuntimeException
No application encryption key has been specified.
今度は、「アプリケーションキーがない」と怒られた。