CodeIgniter

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.

SetEnv CI_ENV production

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

¿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í:

<?php
#...
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'production');

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

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

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

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

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

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

2 días hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

1 semana hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

1 semana hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

1 semana hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

1 semana hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

1 semana hace

Esta web usa cookies.