Вывод всех ошибок PHP в базу данных, а не error_log - PullRequest
8 голосов
/ 26 мая 2010

Можно ли сделать так, чтобы все ошибки PHP записывались в MySQL вместо стандартного файла error_log. Я думаю, это было бы возможно, если бы я написал свой собственный обработчик ошибок с нуля, но у меня есть много устаревшего кода, и в идеале я бы просто сделал 1 глобальное изменение, и это было бы так. Можно ли это сделать?

Ответы [ 2 ]

20 голосов
/ 26 мая 2010

Я не думаю, что это можно сделать без создания собственного обработчика ошибок, но технически это единственное глобальное изменение, которое вы ищете.

Модифицированный пример из руководства :

function myErrorHandler($errno, $errstr, $errfile, $errline)
{
     // you'd have to import or set up the connection here 
     mysql_query("INSERT INTO error_log (number, string, file, line) ".
                 "VALUES .....");         

    /* Don't execute PHP internal error handler */
    return true;
}

тогда

// set to the user defined error handler
$old_error_handler = set_error_handler("myErrorHandler");
2 голосов
/ 26 мая 2010

Похоже, что функция php set_error_handler может делать то, что вы ищете. В первом примере вы можете добавить несколько вставок mysql для записи ваших ошибок в базу данных.

http://www.php.net/manual/en/function.set-error-handler.php

...