序章

Laravel 5の導入とPHPDotenvの採用により、Laravel環境変数はかつてないほど使いやすくなりました。 今日のチュートリアルでは、プロジェクトで環境変数の使用を開始する方法について説明します。

幸いなことに、環境変数を利用する他のフレームワークに精通している人や、Laravelの基本的な知識を持っている人にとって、プロセスは比較的簡単です。

環境変数を使用する理由

環境変数を使用すると、開発者はソースコードから機密性の高いクレデンシャルを抽出し、作業環境に基づいてさまざまな構成変数を使用できます。

ほとんどの開発者にとって、ローカルマシンには、実稼働環境とは異なるデータベースクレデンシャルがあります。 異なるデータベースクレデンシャルは、実稼働環境とローカル環境の間の最も一般的な違いの1つですが、他にも異なる可能性のある構成変数が多数あります。

異なる可能性のあるいくつかの環境変数は次のとおりです。

  • [Mailtrap]( http://mailtrap.io/ を使用してテストメールをローカルに送信し、Mandrillを使用して本番サーバーで実際のメールを送信します
  • ローカルアプリと本番アプリで異なるFacebook開発者クレデンシャルがあります
  • 使いたい file ローカルでのLaravelセッションと redis プロダクションセッション用

ほとんどの場合、アプリケーションが接続する外部サービスのリストもあります。 環境変数は、アプリケーションからこれらを抽出し、環境に基づいて変更する方法を提供します。

警告:gitリポジトリにセキュリティクレデンシャルを保持したくありません。

環境変数は、テスト環境を作成して作業するときにも非常に役立ちます。 比較的簡単に、開発者は切り替えることができます testingproduction 環境。 環境変数の利点のいくつかを理解したので、アプリケーションにそれらを実装する方法を見てみましょう。

アプリで環境変数を宣言する

Laravelのインストールが成功すると、 .env アプリケーションのルートフォルダにあるサンプルファイル。

あなたがComposerでLaravelをインストールした場合、 .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.php MySqlセクションと .env ファイルは、アプリが最初に検索する以下のコードスニペットに似ています。 DB_HOST の中に .env ファイルとそれが宣言されたのでそれから設定 host の中に mysql 等しい配列 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. the : コマンドを実行していることをvimに通知します wq Vimに保存して終了するように指示します。

結論

うまくいけば、Laravelの環境変数をよりよく理解できるようになります。 環境変数は、複数の環境にわたってMVCフレームワークで開発しようとしている人にとって不可欠なツールです。

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

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