Как я могу отправить все ошибки php, выполняемые на одной странице, по электронной почте?

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

  •  19-09-2019
  •  | 
  •  

Вопрос

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

Редактировать:это должен быть код, размещенный на странице, а не правка в 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