php - ci_env - codeigniter environment
CodeIgniter3: ¿Por qué $_SERVER[''CI_ENV''] se establecería en primer lugar? (3)
Veo que en su instalación predeterminada, su index.php tiene esto:
define(''ENVIRONMENT'', isset($_SERVER[''CI_ENV'']) ? $_SERVER[''CI_ENV''] : ''development'');
¿Por qué CI_ENV
ya estaría establecido dentro de la matriz $_SERVER
?
Como Oliver describió; Es un caso de uso especial para múltiples entornos. División del desarrollo, prueba y producción por medio de .htaccess
antes de que llegue al código. Para configurar esto:
Desarrollo (Localhost)
<IfModule mod_env.c>
SetEnv CI_ENV development
</IfModule>
Pruebas (su servidor local)
<IfModule mod_env.c>
SetEnv CI_ENV testing
</IfModule>
Producción (Servidor Remoto)
<IfModule mod_env.c>
SetEnv CI_ENV production
</IfModule>
Tienes razón al pensar que nunca cambiará a menos que haya alguna intervención manual. No hay mucha documentación con respecto a esto:
"Esta variable de servidor se puede configurar en su archivo .htaccess, o configuración de Apache usando SetEnv. Hay métodos alternativos disponibles para nginx y otros servidores, o puede eliminar esta lógica por completo y establecer la constante según la dirección IP del servidor".
Fuente: Uso de la constante del ambiente
En caso de que esté utilizando nginx, aquí está la configuración que debe agregar dentro de la configuración de vhosts:
servidor {...
location ~ /.php$ {
fastcgi_param CI_ENV production;
}
guarde y ejecute la comprobación de sintaxis nginx (solo para evitar que me maldice):
nginx -t
Si tiene problemas o no puede encontrar el parámetro, puede seguir la respuesta a continuación: ¿ Variables Nginx similares a SetEnv en Apache?
Es una convención utilizada por codeigniter. Ayuda a la función de marco ''fuera de la caja''.