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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Laravel

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

Q&A

1回答

3444閲覧

Laravel8でルーティングエラーが発生する

erika.m

総合スコア46

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Laravel

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

0グッド

0クリップ

投稿2020/12/16 09:50

お世話になります。

Laravel8を導入後、中身はデフォルトのまま触らず、route:cacheをしたのちにhome(/)にアクセスしようとするとエラーが発生します。
404にもなりません。

ローカル環境でhttp://localhost/APP_NAME/public/とアクセスした場合は問題なく動いています。
本番サーバ内ではLaravelを非公開領域に置き、wwwルートディレクトリ内にLaravelのpublicへのシンボリックリンクを貼り付ける形で運用しているんですが、この状況でのみ発生しているようです。

発生している問題・エラーメッセージ

1. composer create-project laravel/laravel APP_NAME --prefer-dist 2. cd APP_NAME の後に php artisan route:cache 3. sudo ln -s /var/hogehoge/APP_NAME/public /var/hogehoge/www/APP_LINK 1,2,3実行後に http://example/APP_LINK/ へアクセスすると405エラー (route:clearをするとアクセス可能になる)
HTTP 405 Method Not Allowed Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException:  The GET method is not supported for this route. Supported methods: HEAD. in file   /var/hogehoge/APP_NAME/vendor/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php on line 117

試したこと

本番サーバでのトラブルなので、Linux初心者ながらパーミッション絡みかと思い、
「chmod -R 777 APP_NAME」としてみましたが解決しませんでした。
また、上記にもある通りサーバ上でのエラー発生を確認後、route:clearを行うとこの問題は解消されます。

逆にローカル環境でroute:cacheした場合には問題は再現しません。
というよりも、シンボリックリンクを使っていない環境だと再現しないようです。
その他、適当にルーティングを追加してそのURLにアクセスする場合も問題ありませんでした。

・publicへのシンボリックリンクを貼っている
・route:cacheを行う
・home(/)へのアクセス

の条件が揃った場合に発生するのだと推測しています。
LinuxもLaravelも経験が浅く、自分の力だけでは限界だと思い、質問させていただきました。
どうぞよろしくお願いします。

エラーの発生するサーバ環境

Laravel Framework 8.19.0
Composer version 2.0.8
Apache/2.4.6 (CentOS) PHP/7.4.13

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

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

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

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

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

guest

回答1

0

シンボリックリンク使うような余計なことせずに
/var/hogehoge/APP_NAME/publicがドキュメントルートになるようにApacheを設定すればいいのでは。

ファイルの所有権が違ってApacheから読めてないとかたぶんLaravelとは関係ない部分が原因。

投稿2020/12/16 11:49

kawax

総合スコア10377

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問