Est-il possible d'envoyer un e-mail automatique au webmaster lorsqu'un visiteur rencontre une page d'erreur 500?


10

Est-il possible d'envoyer un e-mail automatique contenant des détails sur la page demandée au webmaster lorsqu'un visiteur rencontre une page d'erreur de 500 serveurs internes?

De cette façon, le webmaster pourrait agir plus rapidement pour résoudre le problème. Il s'agit d'une question générale, de sorte que la plateforme utilisée n'est pas pertinente.


1
veuillez ajouter le logiciel du serveur Web et la langue que vous pouvez (souhaitez) utiliser. (apache, nginx, iis, php, asp) pour que les gens puissent vous montrer des exemples de script.
jflaflamme

Réponses:


7

Oui c'est possible. Vous avez juste besoin de vérifier si le serveur Web est IIS ou Apache, puis vous pouvez le configurer pour afficher une page personnalisée (qui contiendra le code pour capturer les détails que vous voulez de l'utilisateur et vous les envoyer par e-mail) chaque fois qu'un 500 une erreur s'est produite.

Pour Apache, par exemple, c'est vraiment simple. Créez simplement (ou ajoutez s'il en existe un) .htaccesset utilisez la règle suivante pour configurer votre document d'erreur personnalisé:

ErrorDocument 500 /error-docs/500.php

et maintenant pour nginx? :)
rogerdpack

2
@rogerdpack, error_page
Bluebaron

7

L'envoi d'un courrier avec chaque erreur, via une page d'erreur personnalisée, peut ne pas fonctionner si le problème est lié à PHP: votre page personnalisée peut ne pas fonctionner non plus, le courrier ne sort donc pas. Vous recevrez également un e-mail par erreur, ce qui pourrait être un déluge.

Je suggère plutôt d'implémenter une forme d'analyse des journaux: demandez à un travail cron (ou à une tâche planifiée sous Windows) d'analyser les fichiers journaux chaque jour ou toutes les quelques heures et d'envoyer un résumé de tout ce qui a été trouvé depuis la dernière vérification à l'administrateur concerné (s). Vous pouvez également faire en sorte que votre script de vérification des journaux fasse quelques autres choses, comme vous assurer que le service de serveur Web (et tous les services de base de données, etc.) est en cours d'exécution, ne serait-ce que pour la paranoïa. Si rien d'autre, un e-mail par période de rapport peut couvrir d'autres codes d'erreur HTTP (401, 404, ...) et d'autres éléments trouvés dans les journaux. Si vous faites cela, envoyez toujours l'e-mail même si rien ne va : de cette façon, vous savez si votre script de numérisation n'a pas pu s'exécuter parce que vous arrêtez de recevoir des messages (sinon aucun message ne pourrait signifier que tout va bien ou la machine de rapport des dommages est endommagée).


Alternativement, vous pouvez vous connecter au processus de journalisation directement sur Apache en lui faisant écrire (ou diriger ) des entrées de journal dans un script perl ou une base de données qui prend en charge les hooks et les fonctions définies par l'utilisateur (ou est capable d'envoyer des e-mails par d'autres moyens). Vous pouvez également intercepter les événements du journal Apache à l'aide d'un module personnalisé.
Lèse majesté

Voté, je pense que votre réponse mérite vraiment d'être votée. c'est une solution pratique.
ALH

4

Oui, envoyez un e-mail pour chaque erreur. C'est aussi une bonne idée d'envoyer autant d'informations que possible dans le cadre de l'e-mail. Pensez à saisir:

  • le contenu de la collection de formulaires,
  • toutes les variables de session,
  • la chaîne user-agent du navigateur,
  • valeurs des cookies,
  • l'URL de la page, y compris tous les paramètres de chaîne de requête.

Cela aide grandement à des fins de débogage. Il est trivial d'obtenir ces informations dans ASP et ASP.NET classiques via les objets Request et Session.

N'ayez tout simplement pas d'erreur sur votre page d'erreur personnalisée, ou vous allez faire paniquer le serveur Web.


3

Oui, très possible. À l'exception des e-mails, vous pouvez également consulter le journal du serveur Web.

Je suggère de ne pas envoyer d'e-mail sur chaque 500, sinon s'il y a un bug, votre boîte aux lettres sera inondée. Enregistrez simplement l'ID d'erreur, envoyez 1 pour la même erreur sur le même ID.


Je pense que recevoir un e-mail en cas de problème rend la vie du webmaster un peu plus facile au lieu de parcourir le journal du serveur Web. Bon point sur l'idée 1 e-mail. Upvote!
Tony Bolero

Merci. J'utilisais ASP, dans le passé, l'ASP obtient un code d'erreur, je l'utilise et l'url de la page, crée une clé unique et enregistre en mémoire, j'ai reçu 1 e-mail pour chaque erreur et chaque fois que la mémoire est vidée (par exemple redémarrage de l'application). Pas autant d'e-mails, mais suffisamment pour suivre les erreurs. (btw, cette façon peut également suivre 404, mais attention ces jours-ci, trop d'erreur 404 des bots)
Eric Yin

-1

Vous pouvez ajouter un iframe qui charge un php depuis un autre serveur, puis votre page d'erreur enverra toujours des mails.


1
Pourquoi un iframe? Je ne suis pas sûr de comprendre la raison.
Andrew
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.