APIキーを.envにいれてconfig関数で呼び出す理由と方法【Laravel入門講座】

LaravelとStripe API連携

Laravelでは、APIキーや接続情報などを .env ファイルに保存します。

.envファイルの情報をコントローラーやビューで使うときは、configヘルパ関数を使います。

テスト環境では不要ながら、本番環境では、このステップが必要です。

3ステップで設定方法を紹介した後に、なぜこんなことをするのか、理由を解説していきますね。

LaravelでAPIキーを.envにいれてconfig経由で使う方法

まずは方法を、3ステップで解説していきますね。

今回はStripeというサービスのAPIキーを例にとって、説明していきます。

ステップ① .envファイルに入力

まず.env(環境設定)ファイルを開き、次のようにAPIキーを入力します。

設定名=キー

なお.envに入力する際には、大文字でいれるルールがあります。

実際の入力例はこちら。

ステップ② configファイルに入力

次に app/configフォルダのservices.phpファイルを開きます。

下記のように、.envファイルの内容を読み込ませます。

return [
‘設定名’ => env(‘envファイルでの設定名’),
],

return[],はすでに入っているので、入力不要です。

ひとつのシステムに複数のキーがあって、まとめて入れる場合には、配列が使えます。

実際の入力例はこちら。

ステップ③ コントローラーやビューで設定値を呼び出す

最後に、この情報をコントローラーやビューファイルで読み込みます。

この際、configヘルパ関数を使って、下記のようにキーを呼び出せます。

confit(‘ファイル名.設定値名’)

具体的には、コントローラーでキーを呼び出す場合には、次のように書きます。

ビューファイルでは、下記のようにします。

ひとことメモ

config内の既存ファイル(service.php)に書く方法を解説しましたが、新規ファイルを作ってもOK。

入力するキーが多い場合には、そのほうが分かりやすいです。

LaravelでAPIキーを.envにいれてconfig経由で使う理由

ここまでで、設定方法を解説しました。

次に、なぜ、.envファイルの内容を直接読み込んではいけないかを解説します。

Laravelには、config:cacheというコマンドがあります。

本番環境に移行する前に、実施したほうが良いコマンドのひとつ。

これを行うと、設定情報が1つのファイルに統合され、高速でロードができるようになります。

公式マニュアルには、本コマンドについて、下記のように説明があります。

アプリケーションをスピードアップさせるために、全設定ファイルを一つのファイルへまとめる、config:cache Artisanコマンドを使ってください。これによりアプリケーションの全設定ファイルのオプションが、単一のファイルに結合され、フレームワークが素早くロードできるようになります。

一般的には、本番環境へのデプロイ作業の一環として、php artisan config:cacheコマンドを実行すべきでしょう。

*参考元:Laravel8 公式マニュアル 

ところが、このコマンドには、大きな落とし穴が!

config:cacheコマンドを入力すると、.envファイルはロードされなくなってしまうのです。

そのため、.envから直接 設定値を呼び出している箇所では、すべて null という値が返ってきてしまうことに。

じゅんこ
じゅんこ

つまり、外部のキーが呼び出せなくなるコワい事態になります。

これを回避するため、.envの設定値を直接呼び出さず、configヘルパ関数を使ってアクセスする必要があるのです。

configを経由していれば、config:cacheを行っても、設定値は保持されます。

まとめ

今回のまとめ

◆APIキーや接続情報は次の3ステップで呼び出す

①.envファイルに保存

②configに保存

③コントローラーやビューで、configヘルパ関数を使って呼び出す

◆.envから直接キーを呼ぶ出すのがダメな理由は、config:cache を行った際に、.envファイルはロードされなくなるから。

ちなみにLaravelの英語の公式文書には、今回お伝えした注意点が下記のように書かれています。

エクスクラメーションマーク(!)がバンっと付いていて、しっかり注意喚起がされていますよね。

*参考元:Laravel [configuration]

ですが普段用(?)の公式マニュアルには、この件はさらりと書かれており、事の重要さが分かりにくい気がします^^;

アプリケーションを外部と接続させる際には、ぜひご注意ください。

なおconfigファイルからうまく読み込めないトラブルは、こちらの記事で解説しています。

困ったときには、併せて参考にしてください。

LaravelとStripe API連携 Laravel入門講座

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravel10対応

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravel10対応

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる


Laravelの教科書限定コミュニティ【Laravelの教科書ラボ】はじめました。
セミナーで、StripeやChatGPT連携、デバックなど実践スキルを分かりやすく学べます。

ラボの案内を見てみる

Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました