È possibile inviare un'e-mail automatica al webmaster quando un visitatore raggiunge una pagina di errore 500?


10

È possibile inviare un'e-mail automatica che includa i dettagli sulla pagina richiesta al webmaster quando un visitatore raggiunge una pagina di errore del server interno 500?

In questo modo il web master potrebbe agire più rapidamente per risolvere il problema. Questa è una domanda generale, quindi quale piattaforma viene utilizzata è irrilevante.


1
aggiungi il software del server web e la lingua che puoi (vuoi) usare. (apache, nginx, iis, php, asp) in modo che le persone possano mostrarti esempi di script.
jflaflamme,

Risposte:


7

Si è possibile. Hai solo bisogno di accertare se il server web è IIS o Apache e quindi puoi impostarlo per mostrare una pagina personalizzata (che conterrà il codice per acquisire i dettagli che desideri dall'utente e inviarti via e-mail) ogni volta che un 500 si è verificato un errore.

Per Apache, ad esempio, è davvero semplice. Basta creare (o aggiungere se ne esiste uno) a .htaccesse utilizzare la seguente regola al suo interno per impostare il documento di errore personalizzato:

ErrorDocument 500 /error-docs/500.php

e ora per nginx? :)
rogerdpack

2
@rogerdpack, pagina_errore
Bluebaron

7

L'invio di un messaggio di posta elettronica con tutti gli errori, tramite una pagina di errore personalizzata, potrebbe non funzionare se il problema è relativo a PHP: la pagina personalizzata potrebbe non essere eseguita in modo che la posta non esca. Inoltre riceverai una e-mail per errore che potrebbe essere un diluvio.

Suggerirei invece di implementare una qualche forma di scansione dei registri: fai eseguire a cron un lavoro cron (o un'attività pianificata in Windows) i file di registro alla ricerca di errori ogni giorno o ogni poche ore e invia un riepilogo di tutto ciò che è stato trovato dall'ultimo controllo all'amministratore pertinente (S). Potresti anche fare in modo che lo script di controllo del log esegua alcune altre cose, ad esempio assicurati che il servizio del server Web (e tutti i servizi di database e così via) sia in esecuzione, anche solo per motivi di paranoia. Se non altro, una e-mail per periodo di riferimento può comprendere altri codici di errore HTTP (401, 404, ...) e altre cose presenti nei registri. Se lo fai, invia sempre il messaggio e-mail anche se non c'è nulla di sbagliato : in questo modo sai se lo script di scansione non è stato eseguito perché smetti di ricevere messaggi (altrimenti nessun messaggio potrebbe significare che tutto va bene o la macchina di segnalazione danni è danneggiata).


In alternativa, puoi collegarti al processo di registrazione direttamente su Apache facendolo scrivere (o pipe ) voci di registro in uno script perl o in un database che supporti hook e funzioni definite dall'utente (o sia in grado di inviare e-mail in altri modi). Puoi anche intercettare gli eventi del log di Apache usando un modulo personalizzato.
Lèse majesté,

Votato, penso che la tua risposta meriti davvero di essere votata. questa è una soluzione pratica.
ALH,

4

Sì, invia un'email per ogni errore. È anche una buona idea inviare tutte le informazioni che puoi ottenere come parte dell'email. Pensa all'afferrare:

  • il contenuto della raccolta di moduli,
  • tutte le variabili di sessione,
  • la stringa dell'agente utente del browser,
  • valori dei cookie,
  • l'URL della pagina, inclusi eventuali parametri di querystring.

Questo è di grande aiuto ai fini del debug. È banale ottenere queste informazioni nel classico ASP e ASP.NET tramite gli oggetti Request e Session.

Basta non avere un errore nella tua pagina di errore personalizzata o impazzire il web server.


3

Sì, molto possibile. Ad eccezione della posta elettronica, è anche possibile controllare il registro del server Web.

Suggerisco di non inviare e-mail su ogni singolo 500, altrimenti se c'è un bug, la tua casella di posta verrà allagata. Basta registrare l'ID errore, inviare 1 per lo stesso errore sullo stesso ID.


La mia opinione è che ricevere un'e-mail quando qualcosa va storto rende la vita del webmaster un po 'più semplice invece di passare attraverso il registro del server web. Un buon punto sull'idea 1 e-mail. Upvote!
Tony Bolero,

Grazie. Stavo usando ASP, ai vecchi tempi, l'ASP riceve un codice di errore, lo uso e l'URL della pagina, creo una chiave univoca e salva in memoria, ho ricevuto 1 e-mail su ogni errore e su ogni volta che la memoria si scaricava (ad es. riavvio dell'app). Non così tante e-mail, ma abbastanza per tenere traccia degli errori. (a proposito, anche in questo modo è possibile rintracciare 404, ma attenzione, in questi giorni troppo 404 errore dai bot)
Eric Yin

-1

Puoi aggiungere un iframe che carica un php da un altro server, quindi la tua pagina di errore invierà sempre e-mail.


1
Perché un iframe? Non sono sicuro di aver capito il motivo.
Andrew,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.