【Laravel】エラーの解決方法：Warning: require /public/../vendor/autoload.php): failed to open stream: No such file or directory in projects/laravel/github-laravel/public/index.php 

Laravelのプロジェクトをgithubの公式ページからDLし、`php artisan serve`を実行したところ以下エラーが発生。


>Warning: require(/Users/projects/laravel/github-laravel/public/../vendor/autoload.php): failed to open stream: No such file or directory in /Users/projects/laravel/github-laravel/public/index.php on line 34

>Fatal error: require(): Failed opening required '/Users/projects/laravel/github-laravel/public/../vendor/autoload.php' (include_path='.:') in /Users/projects/laravel/github-laravel/public/index.php on line 34

###エラー発生までの経緯
####1. githubからlaravelプロジェクトをclone

`https://github.com/laravel/laravel.git`

```:github上のlaravelをクローン
git clone https://github.com/laravel/laravel.git <プロジェクト名>
```


####2. サーバー起動
`php artisan serve`を実行したところ、エラーが発生

####3. 強制起動
`php -S localhost:8000 -t public/`

強制的に起動し、localhost:8000にアクセスしたところ、同じエラー内容がブラウザに表示された。



<br>
##発生原因
`/vendor/autoload.php`というファイルがないことが問題。
これは、初期状態ではバンドルがインストールされておらず、autoloadも入っていないため。

必要なバンドルが記された、`composer.json`はあるが、実際にインストール済みのバンドルが列挙してある`composer.lock`が存在していない。


<br>
##対処法
composerを使ってバンドルをインストールする。

```
$ composer update
```

`composer.json`に書いてあるバンドルがズラーっとインストールされる。



<br>
###起動

```
$ php artisan serve
Starting Laravel development server: http://127.0.0.1:8000
```

今度はautolodなしのエラーが発生せず、URLが表示された。


<br>

####▼新たな問題 ５００番サーバーエラー

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/9e5c71ca-502b-cb1d-1b58-c38d8c67132f.png)|
|:--|


今度はサーバーエラーが表示された。

<br>
###サーバーエラーの原因
ルート直下のstorage > laravel.log のエラーログを確認。

```:laravel.log
production.ERROR: No application encryption key has been specified. {"exception":"[object] (Illuminate\\Encryption\\MissingAppKeyException(code: 0): No application encryption key has been specified. at /Users/projects/laravel/github-laravel/vendor/laravel/framework/src/Illuminate/Encryption/EncryptionServiceProvider.php:79)
```

encryption key（暗号キー）がないというエラー。


キーが置かれている、ルート直下の`env.example`を確認する。

```:.env
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
```

APP_KEYが記述されていない。これが原因。


<br>
###対処法
APP_KEYを作成する。

####1. .envファイルを作成する。

```
cp .env.example .env
```

>windowsの場合は、copyコマンド

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/a0fe83dd-8bbd-d8ca-5757-25e7bff6d282.png)


####2. キーを作成する

```
$ php artisan key:generate

Application key set successfully.
```

**▼.env**

```
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:afD5bgUa,,,,
APP_DEBUG=true
APP_URL=http://localhost
```

APP_KEYの作成完了

>注意：**.envファイルがない場合はエラーなる**ので先に作成しておくこと。また、.envファイルが空だと実行後も空のままになる。（なのでexample.envをコピーしておく）


####3. キャッシュをクリアする
.envファイルを変更した場合は、内容を反映するためキャッシュクリアが必要。

```
php artisan cache:clear
```


###4. 再起動

```
php artisan serve
```

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/59662afe-88fe-5e4c-e56e-b0ff221baf38.png)|
|:--|

無事トップページが表示された。



<br>
##(補足)composerでLaravelプロジェクトを起動する
今回はgithubからLaravelをクローンしたため、 composerをupdateしたり、APP_KEYを作成する必要があったが、

composerを使ってLaravelプロジェクトを作成すれば、すぐに`php artisan serve`を使ってもエラーが発生しないためおすすめ。

・[composerを使ってLaravelプロジェクトを作成する方法](https://qiita.com/yuta-38/items/072f38500da41b74db64#1-composer%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)


<br>
以上。