沼った Laravel5.5 VPS centOS7 ログイン画面表示されない！

どうも〜！😎
いつも沼ってばっかりVPS！
今回はVPS構築できたのに、`LaravelでAuth認証作成してもログイン画面に飛ばない！！`
ログイン画面にいっても`404 Not Found`っと表示され、とっても悲しい思いをしたので、このQiitaを書きました。
さぁ〜、考える時間ももったいないのでサクサクいきましょう〜！😎
#404 NotFound までの流れ
⑴　Laravelをインストールし、ログイン認証作成のために`php artisan make:auth`を作成。
⑵　Laravelのホーム画面右上に`login`、`regster`の２つのリンクが出てくる。
⑶　ためしに`login`をクリックすると、ブラウザに`404 NotFound`の表示。
why????🤔🤔🤔🤔🤔

#環境設定
バージョン確認コマンドも載せときます
OS　CentOS7.9　`cat /etc/redhat-release`(centOSに限る)
php      7.2.34   　　　 `php -v`
Laravel  5.5.50      　  ` php artisan -V`
apache   2.4.6      　　`httpd -v`
composer 2.0.8       　`composer -v`

#原因
色々と調べてみると、原因はルーティングかApacheの２つのうちのどちらからしいです。
###1.原因はルーティング？？
``` 
php artisan route:list
```
このコマンドで下記のようなルーティング一覧が表示されれば大丈夫とのこと。

```
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| Domain | Method   | URI                    | Name             | Action                                                                 | Middleware   |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
|        | GET|HEAD | /                      |                  | Closure                                                                | web          |
|        | GET|HEAD | api/user               |                  | Closure                                                                | api,auth:api |
|        | GET|HEAD | home                   | home             | App\Http\Controllers\HomeController@index                              | web,auth     |
|        | GET|HEAD | login                  | login            | App\Http\Controllers\Auth\LoginController@showLoginForm                | web,guest    |
|        | POST     | login                  |                  | App\Http\Controllers\Auth\LoginController@login                        | web,guest    |
|        | POST     | logout                 | logout           | App\Http\Controllers\Auth\LoginController@logout                       | web          |
|        | POST     | password/email         | password.email   | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail  | web,guest    |
|        | GET|HEAD | password/reset         | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest    |
|        | POST     | password/reset         |                  | App\Http\Controllers\Auth\ResetPasswordController@reset                | web,guest    |
|        | GET|HEAD | password/reset/{token} | password.reset   | App\Http\Controllers\Auth\ResetPasswordController@showResetForm        | web,guest    |
|        | GET|HEAD | register               | register         | App\Http\Controllers\Auth\RegisterController@showRegistrationForm      | web,guest    |
|        | POST     | register               |                  | App\Http\Controllers\Auth\RegisterController@register                  | web,guest    |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
```
ルーティングは大丈夫そう。。。

###2.原因はApache？？

Apache設定変更をして確認します。
ちなみに、Apacheには設定でディレクトリ内のファイルを無視する設定があるらしいです。

```
① httpdにApacheの設定があるのでそこに飛びましょう
 cd ~/../../etc/httpd/conf

② ディレクトリ内を確認しましょう
ls

③ httpd.conf があることを確認し、今からこのファイルをいじるのでバックアップにcopyしましょう
cp httpd.conf httpd.conf_copy

④ httpd.conf を編集していきます。httpd.confはroot権限がないといけないのでsudoで入ります。
sudo vi httpd.conf 
```
⑤からはApacheの編集です。その前に。
httpd.conf に入るとvimrcで設定していない限り行数を表す数字がないので、下記のvimコマンドで行数を表示しましょう。
`:set number`
ふ〜！便利！！😚


```:httpd.conf 
⑥ 151行目付近の AllowOverride None　を変更
　（変更前）
　　　AllowOverride None
　（変更後）
　　　AllowOverride All

⑦ 変更後はファイルを閉じて、Apacheを再起動します。
systemctl restart httpd
```
ここまでできたら、実際にブラウザを再度読み込みしなおしてみましょう。
404 Not Found の文字が消え、ログイン画面がこんにちは！していればOKです。
なんや。私の場合はApacheの設定が原因やったらしい🤔


####ちなみになんですが
今回編集したのは`<Directory "/var/www/html">`（131行目付近）のところですが、`<Directory "/var/www">`（124行目付近）のところでも同じように編集すると問題解決すると思います。
私は前者のディレクトリに対するApacheの設定を変更しました。

参考サイトさま
[Laravel で Not found が出る]
(https://conocode.com/troubleshooting/laravel-not-found/)

#おまけ（PHPエラーの出し方）
自分のVPS環境整ったし、よしPHP書こう！！っと思っていたら、エラーを吐いてくれない。。
なんで？？🙄
なんで全部エラー500？？Internal ERROR??

実はこれも設定が必要なのです!
エラー表示方法は３種類あるよ！
①phpファイルごとに書いていく
②.htaccessに設定を書く
③php.iniの設定変更

###今回は②の方法を書きます。
⑴ VPSの`/var/www/htmlディレクトリ配下にある.htaccess`にこのコードを書きます。

```:.htaccess
php_flag display_errors On
```
⑵　apacheのコード変更
これはこの記事の`原因はapache??`にあるんでそれを設定してあればおkです！
念のためapacheは一度再起動しておくといいかもしれません。


#おまけ(コマンドにいつもsudoつけるのが面倒い！)

パーミッションを処理しないと、毎回ファイルを編集するのに``sudo``コマンドは必要になる。

CentOSの場合、ファイルをブラウザ表示するときのファイルの場所は``/var/www/html``以下にあるはず。。
今回はその``/html``の権限を変更しましょう。

```:/var/www/
$ ls
//htmlがあればおっけ。
$ ls -l
//-rw-r--r--  root root html
$ sudo chown -R user:user /var/www/
$ ls -l
//-rw-r--r--  user user html
```

``chown``コマンドを叩いて、``root root->user user``に変更になればおっけ。
**※userのところは自分のサーバーにログインしているユーザー名を入れてください。**
権限を変更したら、ファイルを編集するなどの操作時に``sudo ``が不要になっているはず。。



以上になります！
参考サイトさんの方がわかりやすいかもしれませんが、httpd.confの編集場所がわかりにくかったのと、他のサイトさんではhttpd.confファイルの中身が多少違って（バージョン違いのせいかな？？）わかりにくかったので投稿しました。
おまけ追記しました〜！（2021.02.21）

ご指摘あればお気軽に連絡ください！
Qiitaで言いにくければTwitterでDMしていただいても大丈夫です！
LGTM大好物なんで、ポチッと投げ銭感覚でおねがいします〜！ :sunglasses: