เป็นไปได้ไหมที่จะส่งอีเมลอัตโนมัติไปยังผู้ดูแลเว็บเมื่อผู้เยี่ยมชมพบข้อผิดพลาด 500 หน้า?


10

เป็นไปได้ไหมที่จะส่งอีเมลอัตโนมัติที่มีรายละเอียดเกี่ยวกับหน้าที่ร้องขอไปยังเว็บมาสเตอร์เมื่อผู้เยี่ยมชมพบหน้าข้อผิดพลาดเซิร์ฟเวอร์ภายใน 500 ข้อ

วิธีนี้ทำให้เว็บมาสเตอร์สามารถดำเนินการได้เร็วขึ้นเพื่อแก้ไขปัญหา นี่เป็นคำถามทั่วไปดังนั้นแพลตฟอร์มใดที่ใช้ไม่เกี่ยวข้อง


1
โปรดเพิ่มซอฟต์แวร์เว็บเซิร์ฟเวอร์และภาษาที่คุณสามารถ (ต้องการ) ใช้ (apache, nginx, iis, php, asp) ดังนั้นผู้ใช้จะสามารถแสดงตัวอย่างสคริปต์ให้คุณเห็นได้
jflaflamme

คำตอบ:


7

ใช่มันเป็นไปได้ คุณเพียงแค่ต้องตรวจสอบให้แน่ใจว่าเว็บเซิร์ฟเวอร์นั้นเป็น IIS หรือ Apache แล้วคุณสามารถตั้งค่าให้แสดงหน้าเว็บที่กำหนดเอง (ซึ่งจะมีรหัสเพื่อบันทึกรายละเอียดที่คุณต้องการจากผู้ใช้และส่งอีเมลถึงคุณ) เมื่อใดก็ตามที่ 500 พบข้อผิดพลาด

ยกตัวอย่างเช่น Apache มันง่ายจริงๆ เพียงแค่สร้าง (หรือเพิ่มหากมี) .htaccessและใช้กฎต่อไปนี้เพื่อตั้งค่าเอกสารข้อผิดพลาดที่กำหนดเองของคุณ:

ErrorDocument 500 /error-docs/500.php

และตอนนี้สำหรับ nginx? :)
rogerdpack

2
@rogerdpack, error_page
Bluebaron

7

การส่งเมลที่มีข้อผิดพลาดทุกครั้งผ่านหน้าข้อผิดพลาดที่กำหนดเองอาจไม่ทำงานหากปัญหาเกี่ยวข้องกับ PHP: เพจที่กำหนดเองของคุณอาจไม่ทำงานอย่างใดอย่างหนึ่งดังนั้นเมลจะไม่ออกไปข้างนอก นอกจากนี้คุณจะได้รับหนึ่งอีเมลต่อข้อผิดพลาดซึ่งอาจเป็นน้ำท่วม

ฉันขอแนะนำให้ใช้การสแกนแบบบันทึกบางรูปแบบ: ให้งาน cron (หรืองานที่กำหนดไว้ใน Windows) สแกนไฟล์บันทึกเพื่อหาข้อผิดพลาดทุกวันหรือทุกสองสามชั่วโมงและส่งสรุปสิ่งที่พบตั้งแต่การตรวจสอบครั้งล่าสุดไปยังผู้ดูแลระบบที่เกี่ยวข้อง (s) คุณสามารถทำให้สคริปต์การตรวจสอบบันทึกของคุณทำสิ่งอื่น ๆ เช่นตรวจสอบให้แน่ใจว่าบริการเว็บเซิร์ฟเวอร์ (และบริการฐานข้อมูลใด ๆ เป็นต้น) กำลังทำงานหากเพียงเพื่อประโยชน์ของความหวาดระแวง หากไม่มีสิ่งใดอีเมลหนึ่งฉบับต่อรอบระยะเวลาการรายงานสามารถครอบคลุมรหัสข้อผิดพลาด HTTP อื่น ๆ (401, 404, ... ) และสิ่งอื่น ๆ ที่พบในบันทึก หากคุณทำเช่นนี้ให้ส่งข้อความอีเมลเสมอแม้ว่าจะไม่มีสิ่งใดผิดปกติ : วิธีที่คุณรู้ว่าสคริปต์การสแกนของคุณไม่สามารถทำงานได้เนื่องจากคุณหยุดรับข้อความ (มิฉะนั้นไม่มีข้อความใดที่แปลว่าทั้งหมดดีหรือ เครื่องรายงานความเสียหายเสียหาย)


หรือคุณสามารถขอเข้าสู่กระบวนการบันทึกโดยตรงบน Apache โดยให้มันเขียน (หรือไพพ์ ) รายการบันทึกไปยังสคริปต์ perl หรือฐานข้อมูลที่รองรับ hooks และฟังก์ชั่นที่ผู้ใช้กำหนด (หรือสามารถส่งอีเมลด้วยวิธีอื่น) คุณยังสามารถดักจับบันทึกเหตุการณ์ Apache โดยใช้โมดูลที่กำหนดเอง
Lèsemajesté

ฉันคิดว่าคำตอบของคุณสมควรได้รับการ upvoted จริงๆ นั่นเป็นวิธีแก้ปัญหาในทางปฏิบัติ
ALH

4

ใช่ส่งอีเมลทุกข้อผิดพลาด เป็นความคิดที่ดีที่จะส่งข้อมูลให้มากที่สุดเท่าที่จะทำได้เพื่อเป็นส่วนหนึ่งของอีเมล คิดเกี่ยวกับการโลภ:

  • เนื้อหาของการรวบรวมแบบฟอร์ม
  • ตัวแปรเซสชันทั้งหมด
  • สตริงตัวแทนผู้ใช้เบราว์เซอร์
  • ค่าคุกกี้
  • URL ของหน้ารวมถึงพารามิเตอร์การสืบค้นใด ๆ

สิ่งนี้จะช่วยอย่างมากสำหรับการแก้ไขจุดบกพร่อง มันเป็นเรื่องเล็กน้อยที่จะได้รับข้อมูลนี้ใน ASP และ ASP.NET แบบคลาสสิกผ่านอ็อบเจกต์ Request และเซสชัน

เพียงแค่ไม่มีข้อผิดพลาดในหน้าข้อผิดพลาดที่กำหนดเองของคุณหรือคุณจะประหลาดใจที่เว็บเซิร์ฟเวอร์


3

ใช่เป็นไปได้มาก ยกเว้นอีเมลคุณสามารถตรวจสอบบันทึกของเว็บเซิร์ฟเวอร์ได้

ฉันขอแนะนำอย่าส่งอีเมลในทุก ๆ 500 มิฉะนั้นถ้ามีข้อบกพร่องกล่องจดหมายของคุณจะถูกน้ำท่วม เพียงบันทึกรหัสข้อผิดพลาดส่ง 1 สำหรับข้อผิดพลาดเดียวกันในรหัสเดียวกัน


สิ่งที่ฉันใช้คือการรับอีเมลเมื่อมีสิ่งผิดปกติทำให้ชีวิตของเว็บมาสเตอร์ง่ายขึ้นเล็กน้อยแทนที่จะเข้าสู่ระบบบันทึกของเว็บเซิร์ฟเวอร์ จุดดีเกี่ยวกับแนวคิดอีเมล 1 ข้อ Upvote!
Tony Bolero

ขอบคุณ ฉันใช้ ASP ในอดีต ASP ได้รับรหัสข้อผิดพลาดฉันใช้และ URL ของหน้าสร้างคีย์เฉพาะและบันทึกลงในหน่วยความจำฉันได้รับอีเมล 1 ข้อผิดพลาดทุกครั้งและล้างหน่วยความจำทุกครั้ง (เช่น รีบูตแอป) มีอีเมลไม่มาก แต่เพียงพอที่จะติดตามข้อผิดพลาด (BTW วิธีนี้ยังสามารถติดตาม 404 แต่ต้องระวังข้อผิดพลาด 404 วันนี้มากเกินไปจากบอท)
เอริคหยิน

-1

คุณสามารถเพิ่ม iframe ที่โหลด php จากเซิร์ฟเวอร์อื่นจากนั้นหน้าข้อผิดพลาดของคุณจะส่งอีเมลเสมอ


1
ทำไมต้องใช้ iframe ไม่แน่ใจว่าฉันเข้าใจเหตุผล
แอนดรู
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.