質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1039閲覧

Laravelでページを表示したいが404エラー

joywont

総合スコア16

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2024/01/29 06:20

実現したいこと

当方、Laravelの勉強をしており、参考書見ながら作業しているところですが、参考書の内容通りに行ってもページが表示せず、何が悪いのか全く分かりません。

Laravelのフォルダ内にある routes / web.php にRoutes情報を追加し、URLを入力するとページ表示するという最も簡単な新規ページ作成が上手くいきません。

発生している問題・分からないこと

参考書通りの手順とソースを入力するも404エラーで表示しません。

手順は以下のようにしています。

  1. 簡易サーバーはCtrl + cで止める。
  2. web.phpの変更をする。
  3. 再度php artisan serveで始動。
  4. ブラウザにlocalhost:8000/helloと入力して確認。

404エラー。

該当のソースコード

PHP

1// 元々あるもの → 表示する 2Route::get('/', function () { 3 return view('welcome'); 4}); 5 6Route::get('/users', [UserController::class, 'index'])->name('users.index'); 7 8//追加 → 404エラー 9Route::get('hello', function(){ 10 return '<html><body><h1>Hello</h1><p>This is sample page.</p></body></html>'; 11});

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

これだけ上手くいかなかったのかもと思い、少し先に進んで以下のようなやり方も試してみました。

変数受渡しで表示を試みる

// 変数にソースを入れる $html = <<<EOF <html> <head> <title>Hello</title> <style> body {font-size: 16px; color: #999;} h1 {font-size: 100pt; text-align: right; color: #333; margin: -40px 0 -50px 0;} </style> </head> <body> <h1>Hello</h1> <p>This is sample page.</p> <p>これは、サンプルで作ったページです。</p> </body> </html> EOF; Route::get('hello', function() use ($html){ return $html; });

↑404エラー

コントローラーで表示

// コントローラーを生成 php artisan make:controller HelloController
// HelloController内にindexアクション記述 public function index() { return <<<EOF <html> <head> <title>Hello</title> <style> body {font-size: 16px; color: #999;} h1 {font-size: 100pt; text-align: right; color: #333; margin: -40px 0 -50px 0;} </style> </head> <body> <h1>Hello</h1> <p>This is sample page.</p> <p>これは、サンプルで作ったページです。</p> </body> </html> EOF; }
Route::get('hello', 'HelloController@index');

↑404エラー

補足

localhost:8000 と localhost:8000/usersは表示します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroki-o

2024/01/29 10:49

PHPのバージョンは何ですか? 古すぎて無名関数に対応していないのかもしれません。 こちらの環境では3パターンとも動作しています。 (Ubuntu 22.04.3、PHP 8.1.2、Laravel 10.42.0)
AbeTakashi

2024/01/29 16:21

404エラーのサーバのエラーログは確認したでしょうか? ビルドインサーバーで出してる404エラーならビルドインサーバを起動している画面上にエラーログが出ているでしょうし、Laravel側で出してる404エラーなら、Laravelが吐き出しているログ上にエラーログが出ているはずです。エラーの原因を探る場合は、何はともあれログを最初に確認するのが最優先事項ですので、まずはそちらを確認されると良いかと思います。
joywont

2024/01/30 07:02

hiroki-oさん、お世話になります。 環境をお伝えしていませんでした、失礼いたしました。。 XAMPPでPHP8.1.6、Laravel8.83.17を入れて勉強しております。
joywont

2024/01/30 07:04

AbeTakashiさん、お世話になります。 この場合のログはインストールしたフォルダ内にあるstorage\logs\にできるファイルのことでよろしいでしょうか? 確認してみます、ありがとうございます。
ryuichi-works

2024/01/30 16:44

もう試しているかもしれませんが、php artisan route:listというコマンドでweb.phpなどで設定しているルーティングを確認できるのですがコマンドの結果として、最初に提示されているコードだったら下記の様な結果がみられると思います。 〜〜〜 GET|HEAD hello .............................. 他の回答者さんが答えている様にこちらの環境では動作していましたので、もしこの様に表示されていなければルーティングがうまく反映されていないのではと考えられます。 おそらく、ルーティングに関する過去の設定がcache(キャッシュ)として残ってしまっているかもしれません。cacheというのは取得してきた情報を次に取得する時に手間を省くために手元に残しておく機能です。 なので、このcacheをclear(クリア)するとうまく最新のルーティング設定が反映されるかもしれません。 コマンドとしてはphp artisan route:clearでルーティングのcacheをクリアできます。その後、再度php artisan route:listコマンドで確認しつつ、アクセスを試してみてください。 違っていたらごめんなさい。
joywont

2024/01/31 01:15

ryuichi-worksさん、お世話になります。 仰るようにキャッシュクリアしたら表示いたしました。 このようなコマンドがあるんですね。今後何かある都度確認方法の一つとしてやっていこうと思います。 ありがとうございます!
ryuichi-works

2024/01/31 05:27

お役に立てたならよかったです! cacheについてはプログラミング学習を続けるにあたってよく目にするかもしれません。 一つ加えると、php artisan listというコマンドでlaravelで使うコマンド一覧が確認できるので活用されると良いかと思います。今回使ったroute:clearやphp artisan serveなども確認できます。 それと回答をコメント欄に書いてしまっていたので、同じエラーに遭遇している人も見やすい様に回答欄に写しておこうと思います。よろしくお願いします。
guest

回答1

0

ベストアンサー

もう試しているかもしれませんが、php artisan route:listというコマンドでweb.phpなどで設定しているルーティングを確認できるのですがコマンドの結果として、最初に提示されているコードだったら下記の様な結果がみられると思います。
〜〜〜
GET|HEAD hello ..............................
他の回答者さんが答えている様にこちらの環境では動作していましたので、もしこの様に表示されていなければルーティングがうまく反映されていないのではと考えられます。
おそらく、ルーティングに関する過去の設定がcache(キャッシュ)として残ってしまっているかもしれません。cacheというのは取得してきた情報を次に取得する時に手間を省くために手元に残しておく機能です。
なので、このcacheをclear(クリア)するとうまく最新のルーティング設定が反映されるかもしれません。
コマンドとしてはphp artisan route:clearでルーティングのcacheをクリアできます。その後、再度php artisan route:listコマンドで確認しつつ、アクセスを試してみてください。

投稿2024/01/31 05:28

ryuichi-works

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

joywont

2024/02/02 05:28

おかげさまで解決しました、ありがとうございました。 次回からは php artisan route:list も実行してルーティング反映しているかの確認も行っていこうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問