Je vois que dans leur installation par défaut, leur index.php a ceci:
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
Pourquoi serait CI_ENV
ever déjà être défini dans le $_SERVER
tableau?
Comme Oliver l'a décrit; c'est un cas d'utilisation spéciale pour plusieurs environnements. Répartir le développement, les tests et la production au moyen de .htaccess
avant même d'arriver au code. Pour configurer ceci:
<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>
Vous avez raison de penser que cela ne changera jamais à moins d'une intervention manuelle. Il n'y a pas beaucoup de documentation à ce sujet:
"Cette variable de serveur peut être définie dans votre fichier .htaccess ou dans la configuration Apache à l'aide de SetEnv. D'autres méthodes sont disponibles pour nginx et d'autres serveurs, ou vous pouvez supprimer complètement cette logique et définir la constante en fonction de l'adresse IP du serveur."
Juste au cas où vous utilisez nginx, voici la configuration que vous devez ajouter à l'intérieur de la configuration des vhosts:
server {
location ~ \.php$ {
fastcgi_param CI_ENV production;
}
enregistrez et exécutez la vérification de la syntaxe nginx (juste pour éviter de me maudire):
nginx -t
si vous rencontrez des problèmes ou que vous ne trouvez pas le paramètre, vous pouvez suivre la réponse ci-dessous: Variables Nginx similaires à SetEnv dans Apache?