Windows 環境での Laravel インストールから起動まで

起動させるまでがすごく苦労したので、備忘録として以下メモをのこします。


##■PHP使う為に MAMP インストール
XAMPP でもいいです。Windows でも MAMP は動くのでただの好みです。

https://www.mamp.info/en/windows/

インストール後は、`C:\MAMP\htdocs`　の配下に `test` フォルダを作ってそこを、Laravel プロジェクトにしていきます。


##■PHP の Path 通し
MAMP の中にはいっている PHP の ver を、システム環境にて Path 通しします。
これをしないと、コマンドプロンプトで php コマンドが使えないです。


※管理者権限で、環境変数に設定する必要があり、
　コマンドプロンプトで下記コマンドで、管理者権限で環境変数の設定が開けます。

```
Start C:\Windows\system32\rundll32.exe sysdm.cpl, EditEnvironmentVariables
```

・参照
https://www.lisz-works.com/entry/sys-env-admin


##■Composer インストール
インストール手順は以下参照。

・参照
https://weblabo.oscasierra.net/php-composer-windows-install/


インストール時、php.exe は MAMP の中の使用するものを指定。
![compo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534531/c907a35c-a3a4-a41b-410e-061054ec3303.png)

Composerってどんなもの？ということについては以下参照。
・参照
https://gomiba.co/archives/2017/08/883/


##■Composer で Laravel インストール
以下コマンドで、`C:\MAMP\htdocs` 配下に `test` という階層をつくり、そこをLaravelプロジェクトとして用意していきます。
`test` という階層の中に Laravel がインストールされていきます。

```
composer create-project laravel/laravel test
```
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534531/ccbbca32-6eb7-0bfc-15de-fa0ca5fadb39.png)


インストールされると、以下のような階層で vendor というフォルダ一式（これがLaravel本体）も出てくるはず。

```
─── test
    ├── app       ・・・アプリケーションのロジック
    ├── bootstrap ・・・laravelフレームワークの起動コード
    ├── config    ・・・設定ファイル
    ├── database  ・・・MigrationファイルなどDB関連
    ├── public    ・・・Webサーバのドキュメントルート
    ├── resources ・・・ビューや言語変換用ファイルなど
    ├── routes    ・・・ルーティング用ファイル
    ├── storage   ・・・フレームワークが使用するファイル
    ├── tests     ・・・テストコード
    └── vendor    ・・・Composerでインストールしたライブラリ
```

この階層のファイルや役割は以下より参照。

・参照
https://qiita.com/sano1202/items/6021856b70e4f8d3dc3d


`composer.lock` も一緒に `test` 階層にインストールされる。
下記コマンドで、`composer.lock` の内容もインストール。

```
composer install
```
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534531/826fb14f-16bd-8548-c642-c8b2f5c27de5.png)


##■vendor の中の autoload.php

vendor の中に autoload.php ファイルが必要だが無い場合がある。

その場合は、test 階層で、composer.json を元にアップデートする必要がある。
以下コマンドで対応。

```
composer update
```

その後再度 `composer install`

```
composer install
```

vendor の中に `autoload.php` ファイルが出てきてることを確認。

![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534531/de762b3d-9da3-0e7e-6314-059c17b02abc.png)



`composer install` と `composer update` の違いについては以下を参照。
・参照
https://it.becrazy.jp/article/difference-composer-install-update



##■ファイル初期設定

Laravel をサーバーで動かすことを考慮し、test 配下の `/config/app.php` の中身を、いくつか日本仕様にします。

・参考（動画の 1:53 あたり）
https://www.youtube.com/watch?v=Br_Tx619k9E

test 直下の .env ファイルも編集します。
私は myspl 使用するので、.env ファイルの DB_CONNECTION あたりはそのまま触らず。

###●500エラー
`500 | SERVER ERROR`

![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534531/daee457b-466d-bf00-4c72-a3f21e0c13eb.png)

test 直下に、.env ファイルが存在していないと、起動した際にエラーになるもよう。
`.env.example` というファイルはあるはずなので、複製して`.env`という名前に設定。



##■Laravel起動とブラウザ表示

コマンドプロンプトで、artisan ファイルのある階層で、以下コマンドで、Laravelを起動します。

```
php artisan serve --port=4000
```

`php artisan serve`　だけでも起動できますが、初期ポート8000が指定されるようです。
`--port=ｘｘｘｘ` で任意のポートを指定できます。


ブラウザにて `localhost:4000` にアクセスします。


##■エラーの対応
自分の場合、以下のようなエラー表示がでてきました。

###●暗号化キー設定のエラー

![no.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534531/ae9a60ec-c0ab-0660-f464-da8614ba94c9.png)

`No application encryption key has been specified.`

.env ファイルに暗号化キーが設定されていないもよう。
下記コマンドでキー設定。

```
php artisan key:generate
```

.env ファイル内記述の以下キーに設定される。
`APP_KEY=`


・参照
https://akamist.com/blog/archives/2178#:~:text=RuntimeException%20No%20application%20encryption%20key%20has%20been%20specified.&text=%E3%81%93%E3%82%8C%E3%81%AF%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E9%80%9A%E3%82%8A,%E6%9C%AA%E8%A8%AD%E5%AE%9A%E3%81%AE%E3%81%9F%E3%82%81%E3%81%A7%E3%81%99%E3%80%82





無事表示され、起動が確認できました。
![lara.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534531/9052ef33-5b1c-1187-9ae8-7463e247461b.png)