在之前的一张票{i asked about logging PHP errors in MySQL中,它给了我:
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;
但这些错误只是输出到屏幕上,我做错了什么?
答案 0 :(得分:2)
您只能使用自定义错误处理程序处理运行时错误。您的示例中的echo "foo
错误发生在解析(即读入)源时。由于PHP无法完全解析代码,因此它也无法在此错误上运行错误处理程序。
答案 1 :(得分:1)
如果你被迫测试语法是否正确,你可以使用php_check_syntax函数,文件名参数PHP Manual php_check_syntax
php_check_syntax还提供了第二个参数,当使用时将使用错误字符串填充,据我记得
答案 2 :(得分:0)
这确实是错误记录的可怕方式
我们以您的代码为例。它会引发MySQL错误(因为查询格式不正确),您将永远看不到它。以及发生的任何其他错误。这就是我所说的。