aws+nginx+laravelで404エラーが発生した時の解決方法
何回かlaravel環境を構築してるのですが、404エラーが発生した時にどのように解決したら良いかをまとめました。
エラーを潰す為に上から確認していきます。
publicフォルダ配下にアクセスできているかを確認
まず、laravel+nginxもlaraveのプロジェクトが入ったpublicフォルダ配下へのアクセスできるかを確認します。
publicフォルダ配下にアクセスできているかを確認する為に、publicフォルダ配下にphpinfo.phpを配置します。
phpinfo.phpの中身は下記になります。
<?php
phpinfo();
?>
public配下のphpinfo.phpにアクセスできて表示できるなら
phpの実行はOK
public配下へのアクセスはOK
と確認できます。
もしこちら実行できない場合は、phpの実行ができないのか、public配下へのアクセス権限が無いのかを分離して考える為に、適当なhtmlファイルを作って表示できるかテストしましょう。
public配下へのアクセスができるが、index.phpが表示されない場合
まずrouteが正しく設定されているかを確認する為に下記コマンドを実行します。
php artisan route:list
ルーティングがおかしい場合はweb.phpの中身を確認します。
vi routes/web.php
こちらルーティングが合っているなら、次はパーミッションの確認になります。
パーミッションの確認
次にpublicにはアクセスできる、routeの設定もあっている場合は、初期で設定したパーミッションを再度確認
chmod -R 777 storage/
chmod -R 777 bootstrap/cache
この設定でlaravelのトップが表示できない場合laravelプロジェクト全体のパーミッションも確認して下さい。
laravelのトップは表示する事ができたが、その他が表示できない場合
上記設定でトップまでは表示する事はできたが、その他が表示できない場合、
nginx.confファイルを再度確認
vi /ete/nginx/nginx.conf
上記コマンドで編集画面を呼び出し下記の設定がされているかを確認
location / {
try_files $uri $uri/ /index.php?$query_string;
}