0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

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

どうも〜!😎
いつも沼ってばっかりVPS!
今回はVPS構築できたのに、LaravelでAuth認証作成してもログイン画面に飛ばない!!
ログイン画面にいっても404 Not Foundっと表示され、とっても悲しい思いをしたので、このQiitaを書きました。
さぁ〜、考える時間ももったいないのでサクサクいきましょう〜!😎

404 NotFound までの流れ

⑴ Laravelをインストールし、ログイン認証作成のためにphp artisan make:authを作成。
⑵ Laravelのホーム画面右上にloginregsterの2つのリンクが出てくる。
⑶ ためしに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の2つのうちのどちらからしいです。

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 が出る

おまけ(PHPエラーの出し方)

自分のVPS環境整ったし、よしPHP書こう!!っと思っていたら、エラーを吐いてくれない。。
なんで??🙄
なんで全部エラー500??Internal ERROR??

実はこれも設定が必要なのです!
エラー表示方法は3種類あるよ!
①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:

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?