Cambiar modo desde index

Poner modo producción en CodeIgniter 3

Introducción

Veremos cómo poner el modo producción en CodeIgniter. Este modo deberíamos activarlo siempre que publiquemos nuestro proyecto a internet para tener más seguridad.

Recuerda que también puedes ver cómo habilitar el log de errores en CodeIgniter.

¿Qué es el modo producción y desarrollo?

En el modo producción (llamado production), nuestra app ya está siendo usada. Ya está lista, probada, y asegurada. Los errores, si ocurren, ya no se le muestran al usuario, sino que se escriben en un log la mayoría de veces.

En el modo de desarrollo (conocido como development) los errores se muestran directamente, porque se supone que estamos probando y desarrollando, y eso sirve para no tener que estar viendo el log a cada rato.

Si dejamos el modo desarrollo y ocurre un error, se mostrará al usuario y la mayoría de veces el error incluye información sensible como consultas SQL que hacemos, o cosas de esas.

Por defecto, CodeIgniter pone el modo desarrollo.

Poner modo producción en CodeIgniter

Para cambiar el entorno de nuestra app podemos usar diferentes maneras. Depende de nuestro servidor, pero si no queremos hacerlo a nivel de servidor, lo hacemos a nivel de PHP. Veamos algunas opciones.

Con Apache

Estoy seguro de que la mayoría de usuarios usamos Apache con PHP en un entorno LAMPP. Bueno, si tienes un servidor apache debes crear (o modificar) un archivo llamado .htaccess.

Si ya existe, agregas el código que pongo aquí abajo. Si no, entonces creas uno nuevo y pones el código que dejo abajo igualmente.

Así de simple. Estamos usando a SetEnv, que es algo como establecer una variable en el entorno del servidor Apache. La variable se llama CI_ENV y la estamos poniendo en  production. Recuerda que puedes ponerla en:

  • production
  • development
  • testing

Sólo eso. No es necesario reiniciar el servidor, pero si no funciona la primera vez entonces tendrás que hacerlo.

Con PHP

Si usas Nginx u otros servidores, te recomiendo hacerlo a nivel de PHP modificando el archivo index.php. Incluso si usas Apache y no quieres modificar el archivo que menciono, puedes modificar a index.php.

Abrimos el archivo, omitimos los comentarios y veremos algo así:

Vista previa del archivo index.php
Vista previa del archivo index.php

¿Veas la línea que comienza con define? Esa línea vamos a cambiarla.

Si quieres poner tu app en modo desarrollo, deja todo como está. Ya que si no encuentra la variable del servidor pondrá el modo desarrollo.

En caso de que desees poner el modo de producción, cambia la línea de manera que quede así:

Lo único que hicimos fue cambiar a development por production. De hecho podría quedar más corto, aunque no lo recomiendo; pero si sabes lo que haces puede quedar así:

define('ENVIRONMENT', 'production');

En ese caso no tomamos en cuenta la variable del servidor, lo establecemos a mano.

Ejemplo de entornos de producción

Ahora veamos un ejemplo. Tengo una tabla llamada productos, pero en mi consulta la escribiré mal y le pondré productoss (con doble s). Si estoy en modo desarrollo, se muestra esto:

Error en modo desarrollo
Error en modo desarrollo

Eso es muy útil, pues como programador veo qué cosa está fallando. Veo la consulta que se está haciendo y mucha información que un atacante podría usar (pensando en apps de la vida real).

Si ahora pongo el modo producción:

Error en modo producción
Error en modo producción

Se manda el código HTTP 500, y sólo eso. Sí, se da a conocer que hubo un error pero no te dice cuál. Si habilitamos el log, el error quedará registrado en el mismo.

Mi recomendación

Si tienes apache y tu proveedor de hosting (o si es un VPS) te lo permite, cambia directamente usando .htaccess; así puedes tener un archivo en diferentes lugares, sin modificar el código.

En caso de que sea estrictamente necesario, cambia el archivo php.

Conclusión

Es importante saber cómo funciona un framework antes de programar en él, por eso es que recomiendo primero comenzar con PHP simple. En fin, espero que haya servido.

Aquí dejo algunas referencias:

  1. Documentación de CodeIgniter
  2. Documentación de SetEnv

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario