Cambiar modo desde index
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.
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.
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.
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:
Sólo eso. No es necesario reiniciar el servidor, pero si no funciona la primera vez entonces tendrás que hacerlo.
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í:
¿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.
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:
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:
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.
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.
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:
El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…
Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…
En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta web usa cookies.