web-dev-qa-db-ja.com

CodeIgniter3:そもそもなぜ$ _SERVER ['CI_ENV']が設定されるのですか?

デフォルトのインストールでは、index.phpに次のようになっていることがわかります。

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

なぜCI_ENVこれまですでに$_SERVER配列?

25
dsdsdsdsd

オリバーが説明したように;これは、複数の環境の特別な使用例です。コードに到達する前に、.htaccessを使用して開発、テスト、本番環境を分割する。これを構成するには:

開発(Localhost)

<IfModule mod_env.c>
    SetEnv CI_ENV development
</IfModule>

テスト(ローカルサーバー)

<IfModule mod_env.c>
    SetEnv CI_ENV testing
</IfModule>

プロダクション(リモートサーバー)

<IfModule mod_env.c>
    SetEnv CI_ENV production
</IfModule>

手動での介入がない限り、変更されることはないと考えるのは正しいことです。これに関するドキュメントはあまりありません:

「このサーバー変数は、.htaccessファイルで設定するか、SetEnvを使用してApacheの構成で設定できます。nginxと他のサーバーで代替方法を使用するか、このロジックを完全に削除して、サーバーのIPアドレスに基づいて定数を設定できます。」

ソース: 環境定数の使用

41
MackieeE

Nginxを使用している場合に備えて、vhosts構成内に追加する必要がある構成を次に示します。

  server {

        location ~ \.php$ {
            fastcgi_param CI_ENV production;
        }

nginx構文チェックを保存して実行します(あなたが私をののしるのを避けるためだけです):

nginx -t

問題がある場合、またはパラメーターが見つからない場合は、以下の回答に従ってください: ApacheのSetEnvと同様のNginx変数?

4
talsibony