我需要一个解决方案来捕获所有php致命错误,异常,警告等...并给出回调。所以我可以向用户显示友好版本并记录该错误。关于记录方法。我的php脚本允许许多站点在单个安装中运行。我想我每天都会使用文本文件。任何sugesstion或php类,lib?
答案 0 :(得分:8)
这使得几乎所有错误都成为ErrorException
的可捕获实例:
set_error_handler(function($errno, $errstr, $errfile, $errline ){
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
});
在可能出错的代码之前使用它,对于php文件最顶层的实例或包含的公共头文件中的实例
限制:最严重错误(PHP引擎,服务器,语法)无法使用用户定义的函数处理:E_ERROR
,E_PARSE
,在调用set_error_handler()的文件中引发的E_CORE_ERROR
,E_CORE_WARNING
,E_COMPILE_ERROR
,E_COMPILE_WARNING
和大多数E_STRICT
会使其受到损害。
但是,如果语法正确且服务器没有损坏,则不应出现这些错误。
如果需要,您可以使用register_shutdown_function()
和error_get_last()
答案 1 :(得分:7)
php方法:set_error_handler可能就是你要找的东西。
更多信息:http://www.php.net/manual/en/function.set-error-handler.php
答案 2 :(得分:0)
我非常喜欢kohana框架的错误处理。你必须做一些工作来解决它。
它允许您将错误记录到文件并通过电子邮件发送给收件人。它还使您能够重定向到友好的错误页面。
答案 3 :(得分:0)
尝试启动此网页,您应该会看到“消息:按零划分”。
// Set Error Handler
set_error_handler (
function($errno, $errstr, $errfile, $errline) {
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
);
// Trigger an exception in a try block
try {
$a = 3/0;
echo $a;
}
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
}