Почему CI_ENV уже был установлен в массиве $_SERVER?
Ответ 1
Как описал Оливер; это специальный вариант для нескольких сред. Разделите разработку, тестирование и производство с помощью .htaccess прежде чем он даже попадет в код. Чтобы настроить это:
Разработка (Localhost)
<IfModule mod_env.c>
SetEnv CI_ENV development
</IfModule>
<IfModule mod_env.c>
SetEnv CI_ENV production
</IfModule>
Вы правы, думая, что это никогда не изменится, если не будет какого-то ручного вмешательства. Там не так много документации по этому поводу:
"Эта переменная сервера может быть установлена в вашем файле.htaccess или в конфигурации Apache с помощью SetEnv. Альтернативные методы доступны для nginx и других серверов, или вы можете полностью удалить эту логику и установить константу на основе IP-адресов серверов".