CodeIgniter3: Почему в первую очередь нужно установить $ _SERVER ['CI_ENV']?

Я вижу, что в своей установке по умолчанию их index.php имеет следующее:

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

Почему CI_ENV уже был установлен в массиве $_SERVER?

Ответ 1

Как описал Оливер; это специальный вариант для нескольких сред. Разделите разработку, тестирование и производство с помощью .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 или в конфигурации Apache с помощью SetEnv. Альтернативные методы доступны для nginx и других серверов, или вы можете полностью удалить эту логику и установить константу на основе IP-адресов серверов".

Источник: использование константы окружения

Ответ 2

Это конвенция, используемая codeigniter. Это помогает функции фреймворка "из коробки".