[英]PHP error_log errors to MySQL
在之前的一张票中,我询问了在 MySQL 中记录 PHP 错误的问题,这给了我:
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
// mysql connect etc here...
$sql = "INSERT INTO `error_log` SET
`number` = ".mysql_real_escape_string($errno).",
`string` = ".mysql_real_escape_string($errstr).",
`file` = ".mysql_real_escape_string($errfile).",
`line` = ".mysql_real_escape_string($errline);
mysql_query($sql);
// Don't execute PHP internal error handler
return true;
}
// set to the user defined error handler
$new_error_handler = set_error_handler("myErrorHandler");
我可以完成这项工作,但前提是它是这样触发的:
trigger_error("message here");
但是,我还希望为所有错误调用错误处理程序,例如语法错误,例如:
echo "foo;
但是这些错误只是输出到屏幕上,我做错了什么?
您只能使用自定义错误处理程序处理运行时错误。 您的示例中的echo "foo
错误在解析(即读入)源代码时发生。由于 PHP 无法完全解析代码,因此它也无法在此错误上运行您的错误处理程序。
如果你被迫测试语法是否正确,你可以使用 php_check_syntax 函数,带有文件名参数PHP 手册 php_check_syntax
php_check_syntax 还提供了第二个参数,在使用时会被错误字符串填充,据我所知
这确实是一种糟糕的错误记录方式
让我们以您的代码为例。 它会引发一个你永远不会看到的 MySQL 错误(因为查询的格式不正确)。 以及发生任何其他错误。 这就是我要说的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.