หากต้องการใส่บรรทัดในบันทึกข้อผิดพลาดของเซิร์ฟเวอร์ให้ใช้ฟังก์ชัน error_log () ของ PHP อย่างไรก็ตามวิธีดังกล่าวจะไม่ส่งอีเมล
ขั้นแรกในการทำให้เกิดข้อผิดพลาด:
trigger_error("Error message here", E_USER_ERROR);
ตามค่าเริ่มต้นสิ่งนี้จะอยู่ในไฟล์บันทึกข้อผิดพลาดของเซิร์ฟเวอร์ ดูคำสั่ง ErrorLogสำหรับ Apache ในการตั้งค่าไฟล์บันทึกของคุณเอง:
ini_set('error_log', 'path/to/log/file');
โปรดทราบว่าไฟล์บันทึกที่คุณเลือกต้องมีอยู่แล้วและสามารถเขียนได้โดยกระบวนการเซิร์ฟเวอร์ วิธีที่ง่ายที่สุดในการทำให้ไฟล์เขียนได้คือกำหนดให้ผู้ใช้เซิร์ฟเวอร์เป็นเจ้าของไฟล์ (ผู้ใช้เซิร์ฟเวอร์อาจไม่ใช่ใคร _www, apache หรืออย่างอื่นขึ้นอยู่กับการกระจายระบบปฏิบัติการของคุณ)
ในการส่งอีเมลข้อผิดพลาดคุณต้องตั้งค่าตัวจัดการข้อผิดพลาดแบบกำหนดเอง:
function mail_error($errno, $errstr, $errfile, $errline) {
$message = "[Error $errno] $errstr - Error on line $errline in file $errfile";
error_log($message);
mail('you@yourdomain.com', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);
โปรดดูเอกสาร PHP ที่เกี่ยวข้องสำหรับข้อมูลเพิ่มเติม