Help us understand the problem. What is going on with this article?

[Laravel5] 本番環境とテスト環境( or ローカル環境)で条件分岐させる方法 [PHP]

More than 3 years have passed since last update.

Laravel 5.2.31, PHP 5.6.22, CentOS 6.8環境にて動作を確認

まずは.envで各環境を正しく区別させておきます。
.envの場所がわからない場合はroot権限で

find / -name .env 

で場所を検索してください。

  • 本番環境の場合 ※APP_DEBUGの値は変更しなくてもOKです
APP_ENV=production
APP_DEBUG=false
  • ステージング環境の場合
APP_ENV=staging
APP_DEBUG=false
  • テスト環境の場合
APP_ENV=testing
APP_DEBUG=true
  • ローカル環境の場合
APP_ENV=local
APP_DEBUG=true

設定が完了したら、条件分岐させたいPHPファイル内で次のように記述します。

if ( app()->isLocal() || app()->runningUnitTests() ) { // .env に APP_ENV=local (ローカル環境) または APP_ENV=testing (テスト環境) と書いてある場合
  // テスト環境, ローカル環境用の記述
}
else { // .env に APP_ENV=production (本番環境) などと書いてあった場合
  // 本番環境用の記述
}

以上。

追記

こんな書き方もできるみたいです。検証はしてませんが。
これ App::environment('testing') としてもうまく動かなかったのですが私の設定が何かおかしいのだろうか...

if (App::environment('production', 'staging')) {
 // 本番環境とステージング環境用
}

if (App::environment('local')) {
 // ローカル環境用
}

さらに追記

Laravelはじめたての頃に書いたものですが、いまだに結構アクセスがあるので、実際の使用例も載せておきます。

本番環境では、ページが見つからなければ自作の404ページ(resources/views/errors/404.blade.php)を表示、
サーバーエラーはOops Looks Like Something Went Wrongのアレじゃなくて自分で作った500ページ(resources/views/errors/500.blade.php)を表示

テスト環境とローカル環境では、自作の404ページと、サーバーエラーはOopsのアレを表示する

app/Exceptions/Handler.php
    public function render($request, Exception $e)
    {
        if ( app()->isLocal() || app()->runningUnitTests() ) {
            return parent::render($request, $e);
        }
        else {
            if ($this->isHttpException($e)) {
                return $this->renderHttpException($e);
            } else {
                return response()->view("errors.500");
            }
        }
    }
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした