【Laravel】.env中のAPP_ENVで使われるとLaravelが想定している語群

 Laravelの設定機能はphpdotenvをベースに作られています。このため環境に依存する設定は.envファイルに書くのが望ましいです。
vlucas/phpdotenv: Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.
 この記事を書いている時点でLaravelの提供する.env例は次です。
laravel/.env.example at master · laravel/laravel

APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

 いくつか項目がありますが、ここではAPP_ENV=localに注目します。このAPP_ENVとはこの環境がどの様な環境下を定義する値です。この例ではAPP_ENV=localによってこれはローカル環境であると示しています。ただ示すだけでは.envファイルを見る人の役に立つだけです。それはそれで価値がありますがPHPソースコード内でも活用されるべきであり、実際Laravelソースコード内でこのAPP_ENVの値を参照する記述があります。
 この記述は laravel/framework/src/Illuminate/Foundation/Application.php 内にまとまっています。抜き出したのが次です。

    /**
     * Determine if application is in local environment.
     *
     * @return bool
     */
    public function isLocal()
    {
        return $this['env'] === 'local';
    }

    /**
     * Determine if application is in production environment.
     *
     * @return bool
     */
    public function isProduction()
    {
        return $this['env'] === 'production';
    }
    /**
     * Determine if the application is running unit tests.
     *
     * @return bool
     */
    public function runningUnitTests()
    {
        return $this['env'] === 'testing';
    }

 ローカル環境、本番環境、テスト環境それぞれで値が定められメソッドで覆われています。多くのLaravelに関連するコードではこのメソッドを経由して環境を識別しています。このため.env内にもlocal, production, testingのいずれかを書き、それ以外はよっぽどの例外とした方がよいでしょう。余談ですがPHPUnitを使ってLaravel内のテストを行う時、勝手にtesting環境と識別される様になっています。テスト中は不要なミドルウェアを落とす時などに便利です。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG