我正在使用Zend开发一个Web服务,更具体地说,我是Zend_Amf,用于与Adobe Flex互操作.这个问题是我无法轻易看到
PHP错误,因为Flex调试器不会显示来自服务器的实际答案,除非它们是正确的Amf.如果我使用Web浏览器访问Zend_Amf端点,我不会收到任何错误,因此错误是在执行Amf处理程序时.现在我正在使用firebug检查HTTP流量以查看任何错误.
对于我的问题:我可以使用日志实用程序(如Zend_Log)将所有PHP错误,警告和通知记录到文件中,而不是(或除了)在HTTP响应中发送它们吗?
最佳答案 你可以使用
set_error_handler
来捕获PHP错误并使用Zend_Log来记录它们.
这个函数唯一的问题是它不会捕获所有PHP错误,因此无法捕获语法错误等错误….
另一种方法是使用register_shutdown_function
功能
像这样:
error_reporting(E_ALL);
ini_set('display_errors', 0);
function shutdown(){
$isError = false;
if ($error = error_get_last()){
switch($error['type']){
case E_ERROR:
case E_CORE_ERROR:
case E_COMPILE_ERROR:
case E_USER_ERROR:
$isError = true;
break;
}
}
if ($isError){
echo "Script execution halted ({$error['message']})";
} else {
echo "Script completed";
}
}
register_shutdown_function('shutdown');
值得注意的是,即使将两种方法结合起来也不会捕获所有错误,例如语法错误….但是你可以使用普通浏览器看到这种错误.