كيف يمكنني إرسال جميع أخطاء PHP تشغيلها على صفحة واحدة إلى بريد إلكتروني؟

StackOverflow https://stackoverflow.com/questions/1702693

  •  19-09-2019
  •  | 
  •  

سؤال

في الأساس، لدي صفحة واحدة على موقعي أنني أريد أن يتم إرسال أي PHP Erorrs، تحذيرات، وما إلى ذلك لي في رسالة بريد إلكتروني في كل مرة يتم تشغيل البرنامج النصي.

تحرير: يجب أن يكون هذا التعليمات البرمجية التي يتم وضعها على الصفحة، وليس تحرير إلى PHP_INI أو أي شيء من هذا القبيل.

تحرير 2: يحتاج هذا إلى قبض على جميع الأخطاء وإرسال جميع الأخطاء في رسالة بريد إلكتروني واحدة في نهاية البرنامج النصي

هل كانت مفيدة؟

المحلول

ستحتاج إلى إعداد معالج الأخطاء و تسجيل وظيفة الاغلاق للقيام بالبريد. في مثال مبكئي للغاية يمكن أن تبدو مثل هذا:

<?php

$__errors = array();
function my_error_handler($code, $message, $file, $line) {
    global $__errors;
    $__errors[] = sprintf('"%s" (%s line %s)', $message, $file, $line);
}
set_error_handler( 'my_error_handler', E_ALL );

function send_error_log() {
    global $__errors;

    if ( count( $__errors ) > 0 ) {
        foreach ( $__errors as $error ) {
            $body . $error . "\n";
        }
        mail( 'to@example.com', 'error log', $body );
    }
}
register_shutdown_function( 'send_error_log' );

?>

نصائح أخرى

إذا كنت تحاول التقاط مشاكل في الكود، فقد يكون الأمر أكثر فعالية لإلقاء نظرة على سجلات أخطاء خادم الويب الخاص بك (نظرا لأن لديك حق الوصول). إذا كنت تريد هذه في شكل هضم، يمكنك كتابة مهمة Cron لإرسال بريد إلكتروني إليك كل يوم (أو أيا كان).

إذا لم يكن لديك حق الوصول إلى سجلات الخطأ، فاكتب معالج خطأ واستخدام set_error_hander() هو أفضل رهان الخاص بك. ما زلت أقترح وجود معالج الخطأ الكتابة إلى ملف السجل بدلا من إرسال بريد إلكتروني إليك. إذا حصل موقعك على أي حركة مرور في جميع علبة البريد الإلكتروني الخاصة بك، فسيتم إكمالك في أي وقت من الأوقات.

أفضل ما يمكنك فعله هو كتابة معالج خطأ، ووضع ذلك مع set_error_handler. ومع ذلك، لن يتعامل هذا الكل الأخطاء المحتملة.

يمكنك إنشاء وظيفة مخصصة ل set_error_handler()

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top