環境構築

環境ごとにパブリックパスが違う時の対処法

僕がレンタルしているさくらサーバーには複数の Laravel プロジェクトを置いてます。

この場合、パブリックパスにプロジェクト名が入ってしまいます。

一方、ローカル環境ではルートパスでパブリックパスにアクセスできるようにしています。

今回はこれを解決する対処法をエントリーします。

 

問題定義

ローカル環境と本番サーバーのパブリックパスが違う。

例えば画像を読み込む場合

<img src="/{プロジェクト名}/img/logo.png" alt="ロゴ">

一方、ローカル環境では

<img src="/img/logo.png" alt="ロゴ">

これを同じソースコードで表示させたい。

 

解決策

環境によって変わる設定値は .envファイルを使います。

.envファイルで環境変数を定義します。

【 解説 】
laravel では .envファイルが gitignoreファイル にデフォルトで記述されています。
GITでデプロイするときに気にする必要はありません。

 

手順

1).envファイル
2)config/app.php 編集
3)ビューファイル編集

 

1).envファイル

本番環境とローカル環境の envファイルに環境変数を記述します。

 
本番環境

MEDIA_PATH=/ {プロジェクト名} /

 
ローカル環境

MEDIA_PATH=/

 

2)config/app.php 編集

.envファイルで定義した環境変数を使用したいときは, env関数を使います。

第二引数を指定すると変数が定義されていなかった時に返されるデフォルト値になります。

ここでは指定はしません。

:
  'mediaPATH' => env('MEDIA_PATH'),
:

 

3)ビューファイル編集

configファイルで定義した変数は Config::get() で取り出せます。

ビューではこんな感じで記述します。

<img src="{{ \Config::get('app.mediaPATH') }}img/logo.png" alt="ロゴ">
【 解説 】
.envファイルを変更した場合、そのままデプロイしても反映されません。
以下のコマンドを実行してキャッシュをクリアにする必要があります。

 php artisan config:cache 

以上です。

本庄マサノリ

仕事でLaravelを使っています。気づいたことや新しい発見など情報を発信していきます。

 

-環境構築