Laravel環境変数を理解する
序章
Laravel 5の導入とPHPDotenvの採用により、Laravel環境変数はかつてないほど使いやすくなりました。 今日のチュートリアルでは、プロジェクトで環境変数の使用を開始する方法について説明します。
幸いなことに、環境変数を利用する他のフレームワークに精通している人や、Laravelの基本的な知識を持っている人にとって、プロセスは比較的簡単です。
環境変数を使用する理由
環境変数を使用すると、開発者はソースコードから機密性の高いクレデンシャルを抽出し、作業環境に基づいてさまざまな構成変数を使用できます。
ほとんどの開発者にとって、ローカルマシンには、実稼働環境とは異なるデータベースクレデンシャルがあります。 異なるデータベースクレデンシャルは、実稼働環境とローカル環境の間の最も一般的な違いの1つですが、他にも異なる可能性のある構成変数が多数あります。
異なる可能性のあるいくつかの環境変数は次のとおりです。
- [Mailtrap]( http://mailtrap.io/ を使用してテストメールをローカルに送信し、Mandrillを使用して本番サーバーで実際のメールを送信します
- ローカルアプリと本番アプリで異なるFacebook開発者クレデンシャルがあります
- ローカルでのLaravelセッションには
file
を使用し、本番環境でのセッションにはredis
を使用します
ほとんどの場合、アプリケーションが接続する外部サービスのリストもあります。 環境変数は、アプリケーションからこれらを抽出し、環境に基づいて変更する方法を提供します。
警告:gitリポジトリにセキュリティクレデンシャルを保持したくありません。
環境変数は、テスト環境を作成して作業するときにも非常に役立ちます。 開発者は比較的簡単に、testing
環境とproduction
環境を切り替えることができます。 環境変数の利点のいくつかを理解したので、アプリケーションにそれらを実装する方法を見てみましょう。
アプリで環境変数を宣言する
Laravelのインストールが成功すると、アプリケーションのルートフォルダーに.env
サンプルファイルが含まれます。
LaravelをComposerと一緒にインストールした場合、.env.example
ファイルの名前はすでに.env
に変更されています。composerを介してインストールしなかった場合は、先に進んでファイルの名前を変更してください。
チーム環境で作業している場合は、.env.example
ファイルを残して、アプリケーションの実行に必要な環境変数を示す方法として使用すると役立つ場合があります。
.envをソース管理から除外する
.env
ファイルはバージョン管理システムから除外する必要があります。 Gitを使用している場合は、.env
ファイルを.gitignore
ファイルに追加して、コミットされないようにします。 Laravelはこれをデフォルトの.gitignore
ファイルで自動的に処理します。
.env
ファイルは次のようになります。
.env
APP_ENV=local APP_DEBUG=true APP_KEY=SomeRandomString DB_HOST=localhost DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync
データベースクレデンシャル
この例では、環境に基づいてデータベース構成を変更する方法について説明します。 まず、config/database.php
を見てみましょう。 このファイルには、データベースに接続するために必要な情報が含まれています。
config / database.php
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ],
ほとんどの変数がenv()
関数で設定されていることに注意してください。 env()
は、Laravelに組み込まれているヘルパー関数の1つです。
env()
は2つのパラメーターを取ります。
.env
ファイル内の環境変数の名前- 環境変数が見つからない場合のデフォルト値。
たとえば、config/databse.php
MySqlセクションと.env
ファイルがアプリの下のコードスニペットに似ている場合、最初に.env
ファイルでDB_HOST
を検索します宣言されているので、mysql
配列のhost
をmyHost
と等しく設定します。
config / database.php
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ],
.env
DB_HOST=myHost DB_DATABASE=myDB DB_USERNAME=myUsername DB_PASSWORD=mySecret
DB_HOST
環境変数がない場合、デフォルトでlocalhost
になります。 .env
ファイルはバージョン管理システムにないため、実稼働環境で.env
ファイルを作成する必要があります。
Forgeでの本番環境変数の設定
Laravel Forgeでサーバーを作成する場合、これらの環境変数を設定する簡単な方法があります。
forgeで環境変数を設定するには、サーバーをクリックしてから、サイト名の横にある[管理]をクリックします。 次に、[環境]タブをクリックすると、次のようなものが表示されます。
[環境の編集]をクリックすると、サーバーに保存されている.env
ファイル全体を表示できます。 自由に編集!
[環境の編集]をクリックすると、先に進んで環境変数を追加できます。
その他のサーバー
アマゾンでサーバーを実行している場合、プロセスは少しユーザーフレンドリーではありません。 SSH
コマンドを使用してサーバーに接続し、ユーザー権限に応じてvim.env
またはsudo vim .env
を実行することから始めることができます。 このコマンドは、Laravelアプリケーションフォルダーのルートで必ず実行してください。 vim .env
を実行すると、.envという名前の新しいファイルが作成され、すばらしいVimエディターで開きます。
VimはUnix環境用のテキストベースのエディタであり、少し練習すれば比較的簡単に理解できます。 初心者の場合は、i
を使用してテキストを追加し、終了したらescape
ボタンを押してから:wq
を押します。 :
はコマンドを実行していることをvimに通知し、wq
はVimに保存して終了するように指示します。
結論
うまくいけば、Laravelの環境変数をよりよく理解できるようになります。 環境変数は、複数の環境にわたってMVCフレームワークで開発しようとしている人にとって不可欠なツールです。
機密データをアプリケーションコードから分離できるだけでなく、ローカル環境と本番環境を切り替える時間を節約できます。
以下のコメントや質問があれば、遠慮なく連絡してください。 ハッピーコーディング!