Ist es möglich, eine automatische E-Mail an den Webmaster zu senden, wenn ein Besucher eine 500-Fehler-Seite erreicht?


10

Ist es möglich, eine automatische E-Mail mit Details zur angeforderten Seite an den Webmaster zu senden, wenn ein Besucher auf eine 500 interne Server-Fehlerseite stößt?

Auf diese Weise kann der Webmaster schneller handeln, um das Problem zu lösen. Dies ist eine allgemeine Frage, daher ist es irrelevant, welche Plattform verwendet wird.


1
Bitte fügen Sie Webserver-Software und Sprache hinzu, die Sie verwenden können (wollen). (Apache, Nginx, Iis, PHP, Asp), damit die Leute Ihnen Skriptbeispiele zeigen können.
Jflaflamme

Antworten:


7

Ja es ist möglich. Sie müssen nur feststellen, ob es sich bei dem Webserver um IIS oder Apache handelt, und dann können Sie festlegen, dass bei jedem 500 eine benutzerdefinierte Seite angezeigt wird (die den Code enthält, mit dem die gewünschten Details vom Benutzer erfasst und per E-Mail an Sie gesendet werden) Fehler ist aufgetreten.

Für Apache zum Beispiel ist es wirklich einfach. Erstellen Sie einfach a (oder fügen Sie es hinzu, falls vorhanden) .htaccessund verwenden Sie die folgende Regel, um Ihr benutzerdefiniertes Fehlerdokument einzurichten:

ErrorDocument 500 /error-docs/500.php

und jetzt zu nginx? :)
Rogerdpack

2
@rogerdpack, error_page
Bluebaron

7

Das Senden einer E-Mail mit jedem Fehler über eine benutzerdefinierte Fehlerseite funktioniert möglicherweise nicht, wenn das Problem mit PHP zusammenhängt: Ihre benutzerdefinierte Seite wird möglicherweise auch nicht ausgeführt, sodass die E-Mail nicht ausgeht. Außerdem erhalten Sie eine E-Mail pro Fehler, was eine Flut sein könnte.

Ich würde stattdessen vorschlagen, eine Form des Protokoll-Scannens zu implementieren: Lassen Sie die Protokolldateien jeden Tag oder alle paar Stunden von einem Cron-Job (oder einer geplanten Aufgabe unter Windows) auf Fehler scannen und senden Sie eine Zusammenfassung aller seit der letzten Überprüfung gefundenen Informationen an den entsprechenden Administrator (s). Sie können Ihr Protokollprüfungsskript auch dazu bringen, einige andere Dinge zu tun, z. B. sicherzustellen, dass der Webserverdienst (und alle Datenbankdienste usw.) ausgeführt werden, wenn auch nur aus Gründen der Paranoia. Nicht zuletzt kann eine E-Mail pro Berichtszeitraum andere HTTP-Fehlercodes (401, 404, ...) und andere in den Protokollen enthaltene Elemente abdecken. Wenn Sie dies tun, senden Sie die E-Mail-Nachricht immer, auch wenn nichts falsch ist : Auf diese Weise wissen Sie, ob Ihr Scan-Skript nicht ausgeführt werden konnte, weil Sie keine Nachrichten mehr erhalten (andernfalls könnte keine Nachricht bedeuten, dass alles in Ordnung ist oder das Schadensmeldegerät ist beschädigt).


Alternativ können Sie sich direkt in Apache in den Protokollierungsprozess einbinden, indem Sie Protokolleinträge in ein Perl-Skript oder eine Datenbank schreiben (oder weiterleiten ) , die Hooks und benutzerdefinierte Funktionen unterstützt (oder E-Mails auf andere Weise senden können). Sie können Apache-Protokollereignisse auch mithilfe eines benutzerdefinierten Moduls abfangen.
Lèse Majesté

Upvoted, ich denke, Ihre Antwort verdient es wirklich, upvoted zu werden. Das ist eine praktische Lösung.
ALH

4

Ja, senden Sie für jeden Fehler eine E-Mail. Es ist auch eine gute Idee, so viele Informationen wie möglich als Teil der E-Mail zu senden. Denken Sie an das Ergreifen:

  • den Inhalt der Formularsammlung,
  • alle Sitzungsvariablen,
  • die Browser-Benutzeragentenzeichenfolge,
  • Cookie-Werte,
  • die Seiten-URL, einschließlich aller Querystring-Parameter.

Dies ist sehr hilfreich für Debugging-Zwecke. Es ist trivial, diese Informationen in klassischem ASP und ASP.NET über die Objekte Request und Session abzurufen.

Sie haben nur keinen Fehler auf Ihrer benutzerdefinierten Fehlerseite, sonst wird der Webserver ausgeflippt.


3

Ja, sehr gut möglich. Mit Ausnahme von E-Mails können Sie auch das Webserver-Protokoll überprüfen.

Ich schlage vor, nicht alle 500 E-Mails zu senden. Andernfalls wird Ihre Mailbox überflutet, wenn ein Fehler auftritt. Notieren Sie einfach die Fehler-ID und senden Sie 1 für denselben Fehler auf derselben ID.


Ich gehe davon aus, dass das Empfangen einer E-Mail, wenn etwas schief geht, das Leben des Webmasters ein wenig erleichtert, anstatt das Protokoll des Webservers regelmäßig durchzugehen. Guter Punkt über die 1 E-Mail-Idee. Upvote!
Tony Bolero

Vielen Dank. Ich habe ASP verwendet, in der alten Zeit erhält der ASP einen Fehlercode, ich verwende ihn und die URL der Seite, erstelle einen eindeutigen Schlüssel und speichere im Speicher. Ich habe 1 E-Mail bei jedem Fehler und bei jeder Speicherlöschung erhalten (z App neu starten). Nicht so viele E-Mails, aber genug, um Fehler zu verfolgen. (Übrigens kann dieser Weg auch 404 verfolgen, aber seien Sie vorsichtig, heutzutage zu viel 404 Fehler von Bots)
Eric Yin

-1

Sie können einen Iframe hinzufügen, der eine PHP von einem anderen Server lädt, dann sendet Ihre Fehlerseite immer Mails.


1
Warum ein Iframe? Ich bin mir nicht sicher, ob ich den Grund verstehe.
Andrew
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.