Laravel環境変数を理解する

提供:Dev Guides
移動先:案内検索

序章

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つのパラメーターを取ります。

  1. .envファイル内の環境変数の名前
  2. 環境変数が見つからない場合のデフォルト値。

たとえば、config/databse.phpMySqlセクションと.envファイルがアプリの下のコードスニペットに似ている場合、最初に.envファイルでDB_HOSTを検索します宣言されているので、mysql配列のhostmyHostと等しく設定します。

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フレームワークで開発しようとしている人にとって不可欠なツールです。

機密データをアプリケーションコードから分離できるだけでなく、ローカル環境と本番環境を切り替える時間を節約できます。

以下のコメントや質問があれば、遠慮なく連絡してください。 ハッピーコーディング!