matsumoto2222
@matsumoto2222

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

LaravelプロジェクトをAWS上にもっていったら、表示できない

解決したいこと

ホームページの管理画面をローカルで作成しておりました。
せっかくですので公開しようという話になりAWSのec2を使用しておりますが、

puTTy上で
composer create-project --prefer-dist laravel/laravel . "9.*"
を実行したものの、

http://3.114.114.104/project/resources/views/welcome.blade.php
http://3.114.114.104/project/resources/views/news_detail.blade.php
のごとく、正しく読み取れていない状況です。

localでは表示は問題ございません。

version等
PHP 8.1.16 (cli)
Laravel Framework 9.52.9

スクリーンショット 2023-06-20 093841.jpg
スクリーンショット 2023-06-20 094237.jpg

自分で試したこと

リリースノートのバージョン確認
https://readouble.com/laravel/9.x/ja/releases.html

puTTy上
compose install
composer update

view.phpに以下を追記
'engine' => 'blade',

0

3Answer

ローカルとAWSとで参照しているパスが違うので、比較されるものではないと思います。
ローカル:/news_detail
AWS:/project/resources/views/news_detail.blade.php

また、bladeテンプレートは直接実行するものではないので、直接アクセスしても正しく読み取れないものです。

おそらくドキュメントルートの設定に関する問題ではないでしょうか。
Laravelのディレクトリ構造だとpublicディレクトリが公開ディレクトリであり、通常はそこがドキュメントルートになるよう設定されます。
public/index.phpがLaravelの入り口になり、そこからコントローラーなどの処理が実行され、最終的にviewが描画される仕組みです。

同時に、publicディレクトリをドキュメントルートに設定することにより、公開すべきではない他のディレクトリやファイルに直接アクセスされないようにします。

2Like

Comments

  1. @matsumoto2222

    Questioner

    メッセージありがとうございます。

    ドキュメントルートの問題が大きそうです。

    加えまして
    http://3.114.114.104/project/public/
    では表示されていましたが、一部、表示がおかしく、パッケージが不足しているかもしれません。

    Route::get('/top', [TopController::class, 'index']);
    を記述しているのですが、404でした。

    Route::get('/', function () {
    return view('welcome');
    });
    だけが機能しているのが謎でした。

    スクリーンショット 2023-06-20 144932.jpg

    スクリーンショット 2023-06-20 144705.jpg

  2. @matsumoto2222

    Questioner

    ドキュメントるーとの設定、いたしました。
    http://3.114.114.104
    にてwelcome.blade.phpの表示ができました。

    しかし、
    http://3.114.114.104/jigyo
    等は404でした。このようなことはあるのでしょうか?
    web.phpの内容の一部を以下に示します。

    Route::get('/news_detail', [NewsDetailController::class, 'index']);
    Route::get('/', [TopController::class, 'index']);
    Route::get('/achievement/{selected_category}', [ProductController::class,'index'])->name('product.index');
    Route::get('/achievement/edit/{selected_category}', [ProductController::class,'edit'])->name('product.edit');
    Route::get('/achievement/delete/{selected_category}', [ProductController::class,'destroy'])->name('product.destroy');
    Route::get('/jigyo', function () {return view('jigyo');});
    Route::get('/', function () {
    return view('welcome');
    });

index.html(it works)と同じ位置に

index.php
<?php phpinfo();?>

を配置して、nginxがphpを実行できるか?
確認するとともに、フォルダ構成が一致しているか確認してはどうでしょう?

1Like

Comments

  1. @matsumoto2222

    Questioner

    メッセージありがとうございます。

    nginxでなく、Apacheを利用しております。
    Server version: Apache/2.4.56 (Amazon Linux)

    nginxを選ばれていらっしゃる方も増えてるんですね

  2. @matsumoto2222

    Questioner

    スクリーンショット 2023-06-20 134311.jpg
    スクリーンショット 2023-06-20 134215.jpg

    ありがとうございます。
    phpinfo()は表示されました。phpは動作しているようです。

    1. php,laravelは稼働
    2. フォルダ構成は同一?
    3. phpライブラリーは?同一?

    ローカル環境もphpinfo()で表示して比較してください。先ずはバージョンは度外視して、有無を確認してください。

  3. @matsumoto2222

    Questioner

    はい、比較検討してみます。

Your answer might help someone💌