【welcome.blade.phpが表示されない!?】dockerでLaravelの環境を作った時にブラウザで表示ができないのだが…

docker

今回dockerでlarvelの開発環境を作った時に、welcome.blade.phpがlocalhostでアクセスしたときに表示されませんでした。

結構はまりやすいこと。というわけで解決方法を!

初めに

前提

今回はdocker-compose.yaml,Dockerfileはすでに作成されているということで説明します。

結論

結論だけをいうと、ドキュメントルートを指定していないのがいけませんでした!

いつもならそのままでも行けていたんですが、dockerだったらちょっと変わってくるっポイ。

ということで詳しい解決方法を説明していきますね。

どんなエラーが出たのか。

ForbiddenYou don't have permission to access this resource.Apache/2.4.38 (Debian) Server at 127.0.0.1 Port 80

こんな感じのエラーが出たんですね。

あら。。。

welcomeページが見れるのか確認

一旦ウエルカムページだけでも見れるかどうか確認してみます。

http://localhost/{アプリ名}/public/index.php

そしたらこんなエラーが出ました。

 The stream or file "/var/www/html/{アプリ名}/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied

何か権限がうまくいっていないようですね。

ということでstorageの権限を変えてみます。

storage配下のフォルダ、ファイルを再帰的に777の権限にする。
cd /var/www/html/{アプリ名}/
chmod 777 -R storage/

ほ!そしたらウエルカムページが見れるようになりましたね!

これで見れることはわかりました。

ちなみにpublic/ というのはLaravelの処理の起点となるディレクトリなんですね。
PHPフレームワーク「Laravel」における処理の流れと、ルーティングを理解しよう

ただ、これを http://localhost で確認したいわけです。

というわけでドキュメントルートを変えていきます。

ドキュメントルートの変更

今回は作成していたDockerfileに初めからドキュメントルートを変えるようにします。

docker-compose build をしたら勝手にやってくれるというやつですね。

ということで、phpのDockerfileに追記してみます。

追記内容は以下です。

# ドキュメントルートの指定
ENV APACHE_DOCUMENT_ROOT /var/www/html/{アプリ名}/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf

これでdocker-compose buildするとOKです!

"http://localhost"

↑にアクセスするとLaravelのwelcomeページが表示できます!

まとめ

これは結構はまりやすいっぽいですね。

やった事としては以下2点です。

  • strageディレクトリの権限を変える
  • ドキュメントルートを変更する

エラーって傍からみたらそこじゃんってなるけど、当事者からは分からない事ってたくさんですね。

コメント

タイトルとURLをコピーしました