複数環境の取り扱い
開発者は、アプリケーションが開発環境で実行されているか、本番環境で実行されているかによって、異なるシステム動作を望むことがよくあります。たとえば、詳細なエラー出力は、アプリケーションの開発中に役立ちますが、「ライブ」の際にはセキュリティ上の問題を引き起こす可能性もあります。 開発環境では、本番環境では必要のない追加ツールを読み込ませたい場合などがあります。.
定義済み環境
デフォルトでは、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
環境を追加する場合、必要なのは次のとおりです。
**APPPATH/Config/Boot/production.php** を **staging.php** にコピーします。
必要に応じて **staging.php** の設定をカスタマイズします。
現在の環境の確認
現在の環境を確認するには、定数 ENVIRONMENT
をエコーするだけです。
spark env
コマンドで現在の環境を確認することもできます
php spark env
デフォルトのフレームワーク動作への影響
CodeIgniter システムには、ENVIRONMENT
定数が使用されている場所がいくつかあります。 このセクションでは、デフォルトのフレームワークの動作がどのように影響を受けるかについて説明します。
エラー報告
ENVIRONMENT
定数を development
に設定すると、すべての PHP エラーが発生時にブラウザにレンダリングされます。 逆に、定数を production
に設定すると、すべてのエラー出力が無効になります。 本番環境でエラー報告を無効にすることは、適切なセキュリティ対策 です。