複数環境の取り扱い

開発者は、アプリケーションが開発環境で実行されているか、本番環境で実行されているかによって、異なるシステム動作を望むことがよくあります。たとえば、詳細なエラー出力は、アプリケーションの開発中に役立ちますが、「ライブ」の際にはセキュリティ上の問題を引き起こす可能性もあります。 開発環境では、本番環境では必要のない追加ツールを読み込ませたい場合などがあります。.

定義済み環境

デフォルトでは、CodeIgniter には 3 つの環境が定義されています。

  • production 本番環境用

  • development 開発環境用

  • testing PHPUnit テスト用

重要

環境 testing は PHPUnit テスト用に予約されています。テストを支援するために、フレームワークのさまざまな場所に特別な条件が組み込まれています。開発には使用できません。

ステージングなどの別の環境が必要な場合は、カスタム環境を追加できます。環境の追加 を参照してください。

環境の設定

ENVIRONMENT 定数

環境を設定するために、CodeIgniter には ENVIRONMENT 定数が付属しています。$_SERVER['CI_ENVIRONMENT'] を設定すると、その値が使用されます。設定しない場合は、デフォルトで production になります。

これは、サーバーのセットアップに応じて、いくつかの方法で設定できます。

.env

変数を設定する最も簡単な方法は、.env ファイル に記述することです。

CI_ENVIRONMENT = development

注記

** .env** ファイルの CI_ENVIRONMENT 値は、spark env コマンドで変更できます

php spark env production

Apache

このサーバー変数は、** .htaccess** ファイルまたは Apache 設定で SetEnv を使用して設定できます。

SetEnv CI_ENVIRONMENT development

nginx

nginx では、$_SERVER 変数に表示されるように、fastcgi_params を介して環境変数を渡す必要があります。 これにより、env を使用してサーバー全体に設定する代わりに、バーチャルホストレベルで動作させることができます。ただし、専用サーバーでは正常に動作します。 次に、サーバー設定を次のように変更します

server {
    server_name localhost;
    include     conf/defaults.conf;
    root        /var/www;

    location    ~* \.php$ {
        fastcgi_param CI_ENVIRONMENT "production";
        include conf/fastcgi-php.conf;
    }
}

nginx や他のサーバーでは、代替方法を使用できます。または、このロジックを完全に削除し、サーバーの IP アドレスなどに基づいて定数を設定することもできます。

いくつかの基本的なフレームワークの動作に影響を与えることに加えて(次のセクションを参照)、この定数を独自の開発で使用して、実行している環境を区別することもできます。

環境の追加

カスタム環境を追加するには、それらのブートファイルを追加するだけです。

ブートファイル

CodeIgniter では、環境名に一致する PHP スクリプトが **APPPATH/Config/Boot** にある必要があります。 これらのファイルには、エラー表示設定の更新、追加の開発者ツールの読み込みなど、環境に対して行いたいカスタマイズを含めることができます。 これらはシステムによって自動的にロードされます。 新しいインストールでは、次のファイルがすでに作成されています

  • development.php

  • production.php

  • testing.php

たとえば、ステージング用に staging 環境を追加する場合、必要なのは次のとおりです。

  1. **APPPATH/Config/Boot/production.php** を **staging.php** にコピーします。

  2. 必要に応じて **staging.php** の設定をカスタマイズします。

現在の環境の確認

現在の環境を確認するには、定数 ENVIRONMENT をエコーするだけです。

spark env コマンドで現在の環境を確認することもできます

php spark env

デフォルトのフレームワーク動作への影響

CodeIgniter システムには、ENVIRONMENT 定数が使用されている場所がいくつかあります。 このセクションでは、デフォルトのフレームワークの動作がどのように影響を受けるかについて説明します。

エラー報告

ENVIRONMENT 定数を development に設定すると、すべての PHP エラーが発生時にブラウザにレンダリングされます。 逆に、定数を production に設定すると、すべてのエラー出力が無効になります。 本番環境でエラー報告を無効にすることは、適切なセキュリティ対策 です。