Можно ли отправить автоматическое электронное письмо веб-мастеру, когда посетитель попадет на страницу с ошибкой 500?

10

Можно ли отправить автоматическое электронное письмо, содержащее сведения о запрашиваемой странице, веб-мастеру, когда посетители переходят на страницу с 500 внутренними ошибками сервера?

Таким образом, веб-мастер может действовать быстрее, чтобы решить проблему. Это общий вопрос, поэтому какая платформа используется, не имеет значения.

Тони Болеро
источник
1
Пожалуйста, добавьте программное обеспечение веб-сервера и язык, который вы можете (хотите) использовать. (apache, nginx, iis, php, asp), чтобы люди могли показывать вам примеры сценариев.
jflaflamme

Ответы:

7

Да, это возможно. Вам просто нужно выяснить, является ли веб-сервер IIS или Apache, а затем вы можете настроить его так, чтобы он отображал пользовательскую страницу (которая будет содержать код для сбора необходимых вам сведений от пользователя и отправки его вам по электронной почте) всякий раз, когда 500 ошибка обнаружена

Для Apache, например, это действительно просто. Просто создайте (или добавьте, если таковой существует) a .htaccessи используйте следующее правило в нем, чтобы настроить свой собственный документ об ошибках:

ErrorDocument 500 /error-docs/500.php
stealthyninja
источник
а теперь для nginx? :)
rogerdpack
2
@rogerdpack, error_page
Bluebaron
7

Отправка письма с каждой ошибкой через пользовательскую страницу ошибки может не работать, если проблема связана с PHP: ваша пользовательская страница может не работать, поэтому сообщение не отправляется. Также вы получите одно электронное письмо за ошибку, которая может быть флудом.

Вместо этого я бы предложил внедрить некоторую форму сканирования журналов: поручить заданию cron (или запланированной задаче под Windows) сканировать файлы журналов на наличие ошибок каждый день или каждые несколько часов и отправлять сводную информацию обо всем, что было найдено с момента последней проверки, соответствующему администратору. (с). Вы также можете заставить свой скрипт проверки журналов выполнять несколько других вещей, например, убедиться, что служба веб-сервера (и все службы баз данных и т. Д.) Работает, хотя бы ради паранойи. Если ничего другого, то одно электронное письмо за отчетный период может охватывать другие коды ошибок HTTP (401, 404, ...) и другие вещи, найденные в журналах. Если вы делаете это, всегда отправляйте сообщение электронной почты, даже если в этом нет ничего плохого : таким образом вы узнаете, что ваш скрипт сканирования не запустился из-за того, что вы перестали получать сообщения (в противном случае ни одно сообщение не может означать, что все в порядке или отчет о повреждении машины поврежден).

Дэвид Спиллетт
источник
Кроме того , вы можете подключить к процессу регистрации непосредственно на Apache, имея это написать (или трубы записи) в сценарий PERL или базу данных , которая поддерживает крючки и определяемые пользователем функции (или может посылать электронную почту и другие способы). Вы также можете перехватывать события журнала Apache, используя пользовательский модуль.
Lèse Majesté
Я думаю, ваш ответ действительно заслуживает того, чтобы за него проголосовали. это практическое решение.
ALH
4

Да, отправлять электронную почту для каждой ошибки. Это также хорошая идея, чтобы отправить как можно больше информации, как часть электронного письма. Подумайте о захвате:

  • содержание формы коллекции,
  • все переменные сеанса,
  • строка пользовательского агента браузера,
  • значения cookie,
  • URL страницы, включая любые параметры строки запроса.

Это очень помогает в целях отладки. Получить эту информацию в классическом ASP и ASP.NET тривиально через объекты Request и Session.

Просто не создавайте ошибку на своей пользовательской странице ошибок, иначе вы испугаетесь веб-сервера.

Дэрил
источник
3

Да, очень возможно. Кроме электронной почты, вы также можете проверить журнал веб-сервера.

Я советую не отправлять электронную почту на каждые 500, иначе, если есть ошибка, ваш почтовый ящик будет затоплен. Просто запишите идентификатор ошибки, отправьте 1 для той же ошибки на тот же идентификатор.

Эрик Инь
источник
Я полагаю, что получение электронной почты, когда что-то идет не так, делает жизнь веб-мастера немного проще, чем обычную регистрацию журнала веб-сервера. Хороший вопрос об идее 1 электронной почты. Upvote!
Тони Болеро
Спасибо. Я использовал ASP, в старое время ASP получает код ошибки, я использую его и URL-адрес страницы, создаю уникальный ключ и сохраняю в память, я получаю по 1 электронному письму при каждой ошибке и при каждом сбросе памяти (например, перезагрузка приложения). Не так много электронной почты, но достаточно, чтобы отслеживать ошибки. (Кстати, этот путь также может отслеживать 404, но будьте осторожны, в наши дни слишком много ошибок 404 от ботов)
Эрик Инь
-1

Вы можете добавить iframe, который загружает php с другого сервера, тогда ваша страница ошибок всегда будет отправлять письма.

Хосе Абурто
источник
1
Почему фрейм? Не уверен, что понимаю причину.
Андрей