環境変数の構成の簡単な方法を設定する.env

8502 ワード

何ですか.env .envファイルは、グローバル環境プロファイルとしてプロジェクトルートディレクトリの下にあります.
通過するEnvファイルは、環境変数をロードする、getenv(),$_ENVおよび$_SERVERによって自動的に呼び出すことができる.これはPHPバージョンのRuby dotenvです.
//       
APP_ENV=local
//     ,      ,      。
APP_DEBUG=true
//         ,    php artisan key:generate     。
APP_KEY=
//      
APP_URL=http://localhost

//     ,          。
CACHE_DRIVER=file
//     ,        SESSION。
SESSION_DRIVER=file
//     ,        。
QUEUE_DRIVER=sync

// Redis   key-value   ,      ,       。
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

//       
DB_HOST=127.0.0.1//      
DB_PORT=3306//     
DB_DATABASE=homestead//     
DB_USERNAME=homestead//       
DB_PASSWORD=secret//       

メリット
  • 把.EnvはGITの.gitignoreファイルに加入し、.envファイル中の機密情報の漏洩
  • を避けることができる.
  • Apache/nginxプロファイルを変更することなく、環境変数
  • を設定できます.
  • php_を.htaccessに追加する必要はありません.value値
  • ENV環境変数値の移植と共有を容易にする
  • 互換サーバ内蔵サーバとCLIランチャー
  • composerでインストールする
    curl -s http://getcomposer.org/installer | php
    php composer.phar require vlucas/phpdotenv

    使用方法.envファイルは通常、バージョン管理には含まれない、機密のAPI Keyまたはパスワードを含む可能性がある.環境変数の定義(敏感でない定義)を必要とするすべてのプロジェクトは、自分たちが定義した環境変数または共同開発に含む環境変数を含む.env.exampleファイルを作成する必要がある.プロジェクト協力開発者は独立して複製することができる.env.exampleは.envと名前を変更し、正しいローカル環境構成に変更し、パスワードkeyを格納するか、必要な値を提供する.この使用方法では、.envファイルを.gitignoreファイルに追加すべきであり、プロジェクトの協力者によってチェックイン/チェックアウトされることは永遠にない.この方法は、バージョン管理において機密性のないAPI Keyまたはパスワードが存在することを確保し、セキュリティリスクを低減する.また、開発環境における構成は、協力開発者に通知することは決してない.
    ルートディレクトリの下に配置された.envファイルを追加し、.envファイルが.gitignoreに追加され、CVSにチェックインしないことを確認します.
    S3_BUCKET=dotenv
    SECRET_KEY=souper_seekret_key

    次に作成します.env.exampleファイルをプロジェクトにチェックインします.ここで、設定と環境変数は、空にしたり、重要でないデータを設定したりすることができます.この方法は人々にこれらのデータが必要であることを知らせるが、本当の環境のデータは提供しない.
    S3_BUCKET=devbucket
    SECRET_KEY=abc123

    次の行のコードを使用してアプリケーションをロードできます.Envファイル:
    Dotenv::load(__DIR__);

    定義変数はすべてgetenvメソッドでアクセス可能である、スーパーグローバル変数$_ENVおよび$_SERVERでアクセス可能である.
    $s3_bucket = getenv('S3_BUCKET');
    $s3_bucket = $_ENV['S3_BUCKET'];
    $s3_bucket = $_SERVER['S3_BUCKET'];

    フレームワークのRequestクラスを使用して、これらの変数にアクセスすることもできます(フレームワークを使用する場合).
    $s3_bucket = $request->env('S3_BUCKET');
    $s3_bucket = $request->getEnv('S3_BUCKET');
    $s3_bucket = $request->server->get('S3_BUCKET');

    埋め込み変数
    1つの変数に1つの環境変数を埋め込むことは可能であり、重複を減らすのに有用である.{$…}を使用して環境変数e.gをラップ.
    BASE_DIR=/var/webroot/project-root
    CACHE_DIR={$BASE_DIR}/cache
    TMP_DIR={$BASE_DIR}/tmp

    不変
    デフォルトでは、Dotenvは環境変数が不変であると考えている.すなわち、設定を変更することはできない.
    環境変数を可変に設定するには、次の関数を使用します.
    Dotenv::makeMutable();

    ...同様に、次の関数を使用して変更しないようにすることもできます.
    Dotenv::makeImmutable();

    要求変数を設定する必要があります
    Dotenvを使用すると、このENV変数を設定する必要があることを指定できます.設定しないと異常が放出されます.これは人々にとって非常に有用であり、プログラムがこの変数を欠くと実行できない.
    次の構文を使用します.
    Dotenv::required('DATABASE_DSN');

    または配列を定義します.
    Dotenv::required(array('DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS'));

    ENV変数が欠落している場合、DotenvはRuntimeExceptionを放出します.
    Required environment variable missing or value not allowed: 'DB_USER', 'DB_PASS'

    許容値
    上の異常情報を見たかもしれませんが、環境変数がこのルールを遵守するように可能な範囲値を設定することができます.
    Dotenv::required('SESSION_STORE', array('Filesystem', 'Memcached'));
    

    同様に、環境変数がこのリストにない場合、似たような例外情報が表示されます.
    Required environment variable missing or value not allowed: 'SESSION_STORE'
    

    コメント
    #を使用して文字をコメントできます.E.g.
    # this is a comment
    VAR="value" # comment
    VAR=value # comment

    コメントの使用
    開発者がコードライブラリをクローンすると手動でコピーするための追加のマニュアルを受け取ります.env....名前を変更します.Envは、自分たちの値(または他の開発者から他の敏感な値)を追加する.
    phpdotenvは開発者環境の構築に用いるが、生産環境では用いるべきではない.本番環境では、要求を使用するたびに使用する必要がなく、真実の変数を設定する必要がある.Envファイルをリロードする.
    これは、Vagrant、chef、Puppet、またはPagodabox、Herokuなどのクラウドホストによる手動での導入ツールの自動化によって実現することができる.
    リファレンス
    https://segmentfault.com/a/1190000010886175