访客访问500错误页面时,是否可以向网站管理员发送自动电子邮件?


10

当访问者访问500个内部服务器错误页面时,是否可以向网站管理员发送一封包含请求页面详细信息的自动电子邮件?

这样,网站管理员可以更快地采取行动来解决问题。这是一个普遍的问题,因此使用哪个平台是无关紧要的。


1
请添加您可以(想要)使用的网络服务器软件和语言。(apache,nginx,iis,php,asp),这样人们就可以向您展示脚本示例。
jflaflamme 2012年

Answers:


7

是的,有可能。您只需要确定Web服务器是IIS还是Apache,然后就可以将其设置为显示自定义页面(该页面将包含捕获用户想要的详细信息并将其通过电子邮件发送给您的代码),每当500遇到错误。

例如,对于Apache,这确实很简单。只需创建(或添加,如果存在),.htaccess然后在其中使用以下规则来设置您的自定义错误文档:

ErrorDocument 500 /error-docs/500.php

现在是nginx?:)
rogerdpack 2014年

2
@ rogerdpack,error_page
Bluebaron '16

7

如果问题与PHP有关,则通过自定义错误页面发送包含所有错误的邮件可能无法正常工作:自定义页面也可能无法运行,因此邮件也不会发送出去。另外,每个错误您都会收到一封电子邮件,这可能是洪水。

我建议改为实施某种形式的日志扫描:让cron作业(或Windows下的计划任务)每天或每隔几个小时扫描日志文件中是否有错误,并将自上次检查以来发现的所有内容的摘要发送给相关管理员。 (s)。您也可以使日志检查脚本执行其他一些操作,例如,仅出于偏执狂的考虑,确保Web服务器服务(以及任何数据库服务等)正在运行。如果没有其他要求,则每个报告期间一封电子邮件可以覆盖其他HTTP错误代码(401、404等)以及日志中的其他内容。如果这样做,即使没有任何问题也要始终发送电子邮件:这样,您就可以知道扫描脚本是否由于停止获取消息而无法运行(否则,没有消息可能表示一切正常 损坏报告机损坏)。


另外,您可以通过将日志条目写入(或管道)到支持钩子和用户定义的功能(或能够以其他方式发送电子邮件)的perl脚本或数据库中,直接在Apache上挂入日志记录过程。您还可以使用自定义模块拦截Apache日志事件。
冒犯君主

赞成,我认为您的回答确实值得赞成。那是实际的解决方案。
ALH 2012年

4

是的,请为每个错误发送电子邮件。发送尽可能多的信息(作为电子邮件的一部分)也是一个好主意。考虑一下抓取:

  • 表单集合的内容,
  • 所有会话变量,
  • 浏览器用户代理字符串,
  • Cookie值,
  • 页面URL,包括任何querystring参数。

这对于调试很有帮助。通过Request和Session对象以经典的ASP和ASP.NET获取此信息很简单。

只是在您的自定义错误页面上没有错误,否则您将迷惑Web服务器。


3

是的,很有可能。除电子邮件外,您还可以检查Web服务器日志。

我建议不要每发送500个电子邮件,否则,如果存在错误,您的邮箱将被淹没。只需记录错误ID,为相同ID上的相同错误发送1。


我的看法是,当出现问题时接收电子邮件会使网站管理员的生活变得更轻松,而不是通过Web服务器常规日志。关于1个电子邮件提示的要点。赞!
Tony Bolero 2012年

谢谢。我以前使用的是ASP,在过去,ASP会得到一个错误代码,并使用它和页面的url,创建一个唯一的密钥并保存到内存中,每次错误和每次刷新内存时我都会收到1封电子邮件(例如应用重启)。电子邮件不多,但足以跟踪错误。(顺便说一句,这种方式也可以跟踪404,但是要小心,这些天机器人产生的404错误太多)
Eric Yin

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.