index ci_env php codeigniter-3

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''.