Cuando Magento 1.4.0.1 o superior presenta una condición de error es muy probable que veas el siguiente mensaje:
There has been an error processing your requestException printing is disabled by default for security reasons
Error log record number: XXXXXXXXXXXXXXX
A diferencia de las versiones anteriores de Magento que mostraban directamente el informe de errores, de manera que el que accediera a la tienda, mientras estuviera el error, podía verlo, en la 1.4.0.1 y las siguientes versiones mantienen los datos privados y accesibles sólo para los administradores y en su lugar nos muestra el conocido mensaje “Exception printing is disabled by default for security reasons”. Esto es porque, hay información en los informes de error, que los piratas informáticos o hackers pueden utilizar. Así que es genial ver a la seguridad Magento mejorar. Este cambio entró con la versión 1.4.0.1 como se documenta en las notas de lanzamiento:
NOTAS DE LA VERSIÓN – MAGENTO 1.4.0.1 ESTABLE (19 DE FEBRERO DE 2010)
CAMBIOS
- La excepción del informe de impresión de errores está desactivada por defecto por razones de seguridad. Para imprimir el informe de errores, copia el archivo errors/local.xml.sample y editaló como errors/local.xml
“Exception printing is disabled by default for security reasons”
Varien parece haberse pasado un pelín desactivando las notificaciones de seguridad cuando se produce un error. Hubiera sido mejor tener notificaciones habilitadas y que se utilizara la dirección de correo electrónico del admin configurado en el área de administración. Mejor aún, añadir estas opciones a Sistema -> Configuración -> Administrador en la zona de administración. Quizá esto vendrá en futuras versiones aunque en la 1.5.1.0 seguimos igual.
Es muy importante, para comercios y administradores, saber cualquier problema dentro de la tienda. Si se marca un directorio de informes de errores en una base regular, es probable que puedas ver los errores. Si no, no tienes idea de que los clientes no pueden utilizar ciertas áreas de tu sitio. Esto afecta a los clientes. Pérdidas de visitantes que se repiten y que, posiblemente, no volverán. Y el consiguiente dinero perdido de las posibles ventas. Lo ideal es contar con un informe de error enviado por correo electrónico al administrador. Pero que no muestre el contenido del error a un cliente. Para ello tenemos que seguir las instrucciones en las notas de desarrollo y editar el fichero de configuración.
PASO 1
Cambiar el nombre o copiar el archivo de configuración de ejemplo errors/local.xml.sample a errors/local.xml dentro de tu directorio de instalación de Magento.
PASO 2
Abre «errors/local.xml» y verás algo como esto (la traducción al español la pongo para ayudaros, en tu archivo estará en inglés):
<config>
<skin>default</skin>
<report>
<!--"action" se puede configurar como "print" para mostrar una excepción en la pantalla y "email" para enviar la excepción a la cuenta de correo electrónico especificada-->
<action>print</action>
<!--en "subject" se puede configurar el asunto del correo electrónico-->
<subject>Store Debug Information</subject>
<!--"email_address" dirección de email del admin-->
<email_address></email_address>
<!--"trash" se utiliza para rastrear la informaciónel valor "leave" es para guardar en el disco el valor "delete" es para la limpieza, eliminarla vamos-->
<trash>leave</trash>
</report>
</config>
Los comentarios son auto-explicativos, por lo que si quieres recibir el informe de errores por email a «webmaster@yourdomain.com» y dejar en el disco para futura referencia, esto es lo que necesitas tener en tu archivo local.xml:
<config>
<skin>default</skin>
<report>
<action>email</action>
<subject>Informe de error de Magento Commerce. Información Debug de la Tienda</subject>
<email_address>webmaster@yourdomain.com</email_address>
<trash>leave</trash>
</report>
</config>
Ya sabes…
Si decides dejar el informe de errores en el disco, los encontrarás en var/reports/{report_id}. Los archivos de informes son JSON (JavaScript Object Notation) y se pueden abrir con cualquier editor de texto. Debes tratar de buscar en los Foros de Magento en español o en los Foros Oficiales de Magento o en la web las partes clave del error para ver si alguien ha visto el problema antes y publicado la respuesta y/o solución. Si no puedes encontrar una respuesta, empieza un nuevo tema en el foro apropiado de Magento en Español o los oficiales, e incluye el contenido del informe en tu mensaje inicial. También es importante añadir tantos detalles como sea posible, para que un responsable, o un miembro de la comunidad, te ayude (si has actualizado, cambiado algún código, etc).
Los parámetros establecidos dentro de errors/local.xml determinarán los resultados generados por errors/default/report.phtml. Lo ideal sería que hubiera un botón para «Informar de errores» o un enlace para permitir a los clientes informar del problema al propietario/administrador de una tienda. Actualmente esta característica no existe. Así que, habría que ir añadiendo el código necesario para el report.phtml y rellenar una RFE para conseguir que estos cambios figuren en la Fuente de Magento. Sin esta característica, el cliente se queda en tierra de nadie. Quizás al cliente le ha surgido un problema y no tiene manera de saber (a) cuál era el problema, o (b) saber si el problema se solucionará en breve y podrá seguir disfrutando de su compra o de la tienda en general. Mirándolo desde la perspectiva de los clientes, es probable que salgan de tu sitio y vayan a otro, ¿no lo harías tu?.
Así que, si se te ocurre algo para mejorar este código o tienes otro tipo de configuración o contribución propia y quieres compartirlo con el resto comentanoslo en los comentarios. Espero que esto te haya sido de utilidad. De cualquier forma, el código es por lógica. No es algo que yo haya creado. Basta leer las notas de desarrollo del propio archivo.
Buenas!
En pirmer lugar muchas gracias! Me ha ayudado a entender el problema.
Por otro lado, no tengo claro: cuando debo poner el email cuál pongo?
Tal cual: webmaster@yourdomain.com
O tengo que poner: webmaster@el nombre de mi dominio
O puedo poner un email mío cualquiera?
Muchas gracias!!