¿Es posible enviar un correo electrónico automático al webmaster cuando un visitante llega a una página de error 500?

10

¿Es posible enviar un correo electrónico automático que incluye detalles sobre la página solicitada al webmaster cuando un visitante llega a una página de error del servidor interno 500?

De esa forma, el web master podría actuar más rápidamente para resolver el problema. Esta es una pregunta general, por lo que la plataforma utilizada es irrelevante.

Tony Bolero
fuente
1
agregue el software del servidor web y el idioma que puede (querer) usar. (apache, nginx, iis, php, asp) para que las personas puedan mostrarle ejemplos de scripts.
jflaflamme

Respuestas:

7

Si es posible. Solo necesita determinar si el servidor web es IIS o Apache y luego puede configurarlo para que muestre una página personalizada (que contendrá el código para capturar los detalles que desea del usuario y enviarlo por correo electrónico) siempre que error encontrado

Para Apache, por ejemplo, es realmente simple. Simplemente cree (o agregue si existe) ay .htaccessuse la siguiente regla para configurar su documento de error personalizado:

ErrorDocument 500 /error-docs/500.php
stealthyninja
fuente
y ahora para nginx? :)
rogerdpack
2
@rogerdpack, error_page
Bluebaron
7

Enviar un correo con cada error, a través de una página de error personalizada, puede no funcionar si el problema está relacionado con PHP: es posible que su página personalizada tampoco se ejecute para que el correo no se salga. También recibirá un correo electrónico por error que podría ser una inundación.

En su lugar, sugeriría implementar alguna forma de escaneo de registros: haga que un trabajo cron (o tarea programada en Windows) escanee los archivos de registro en busca de errores todos los días o cada pocas horas y envíe un resumen de todo lo encontrado desde la última verificación al administrador correspondiente (s) También puede hacer que su script de verificación de registro haga algunas otras cosas, como asegurarse de que el servicio del servidor web (y cualquier servicio de base de datos, etc.) se esté ejecutando, aunque solo sea por el bien de la paranoia. Por lo menos, un correo electrónico por período de informe puede cubrir otros códigos de error HTTP (401, 404, ...) y otras cosas que se encuentran en los registros. Si hace esto, envíe siempre el mensaje de correo electrónico incluso si no hay ningún problema : de esa manera, sabrá si su script de escaneo no se ejecutó porque deja de recibir mensajes (de lo contrario, ningún mensaje podría significar que todo está bien o La máquina de informe de daños está dañada).

David Spillett
fuente
Alternativamente, puede conectarse al proceso de registro directamente en Apache haciendo que escriba (o canalice ) las entradas de registro en un script perl o en una base de datos que admita enlaces y funciones definidas por el usuario (o que sea capaz de enviar correos electrónicos de otras maneras). También puede interceptar eventos de registro de Apache utilizando un módulo personalizado.
Lèse majesté
Votado, creo que su respuesta realmente merece ser votada. Esa es una solución práctica.
ALH
4

Sí, envíe un correo electrónico por cada error. También es una buena idea enviar tanta información como sea posible como parte del correo electrónico. Piensa en agarrar:

  • el contenido de la colección de formularios,
  • todas las variables de sesión,
  • la cadena de agente de usuario del navegador,
  • valores de cookies,
  • la URL de la página, incluidos los parámetros de la cadena de consulta.

Esto es de gran ayuda para la depuración. Es trivial obtener esta información en ASP clásico y ASP.NET a través de los objetos Solicitud y Sesión.

Simplemente no tiene un error en su página de error personalizada, o asustará al servidor web.

Daryl
fuente
3

Si, muy posible. Excepto el correo electrónico, también puede consultar el registro del servidor web.

Sugiero no enviar correos electrónicos en cada 500, de lo contrario, si hay un error, su buzón se inundará. Simplemente registre la identificación del error, envíe 1 por el mismo error en la misma identificación.

Eric Yin
fuente
Mi opinión es que recibir un correo electrónico cuando algo sale mal hace que la vida del webmaster sea un poco más fácil en lugar de pasar por el registro del servidor web. Buen punto sobre la idea de 1 correo electrónico. ¡Votación a favor!
Tony Bolero
Gracias. Estaba usando ASP, en los viejos tiempos, el ASP recibe un código de error, lo uso y la URL de la página, hago una clave única y la guardo en la memoria, recibí 1 correo electrónico por cada error y cada vez que se borraba la memoria (p. Ej. reinicio de la aplicación). No tantos correos electrónicos, pero suficientes para rastrear errores. (por cierto, de esta manera también puede rastrear 404, pero tenga cuidado, en estos días demasiados errores 404 de bots)
Eric Yin
-1

Puede agregar un iframe que cargue un php desde otro servidor, luego su página de error siempre enviará correos.

jose aburto
fuente
1
¿Por qué un iframe? No estoy seguro de entender la razón.
Andrew