どうも〜!😎
いつも沼ってばっかりVPS!
今回はVPS構築できたのに、LaravelでAuth認証作成してもログイン画面に飛ばない!!
ログイン画面にいっても404 Not Found
っと表示され、とっても悲しい思いをしたので、このQiitaを書きました。
さぁ〜、考える時間ももったいないのでサクサクいきましょう〜!😎
#404 NotFound までの流れ
⑴ Laravelをインストールし、ログイン認証作成のためにphp artisan make:auth
を作成。
⑵ Laravelのホーム画面右上にlogin
、regster
の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
ふ〜!便利!!😚
⑥ 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??
実はこれも設定が必要なのです!
エラー表示方法は3種類あるよ!
①phpファイルごとに書いていく
②.htaccessに設定を書く
③php.iniの設定変更
###今回は②の方法を書きます。
⑴ VPSの/var/www/htmlディレクトリ配下にある.htaccess
にこのコードを書きます。
php_flag display_errors On
⑵ apacheのコード変更
これはこの記事の原因はapache??
にあるんでそれを設定してあればおkです!
念のためapacheは一度再起動しておくといいかもしれません。
#おまけ(コマンドにいつもsudoつけるのが面倒い!)
パーミッションを処理しないと、毎回ファイルを編集するのにsudo
コマンドは必要になる。
CentOSの場合、ファイルをブラウザ表示するときのファイルの場所は/var/www/html
以下にあるはず。。
今回はその/html
の権限を変更しましょう。
$ 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大好物なんで、ポチッと投げ銭感覚でおねがいします〜!