4

我正在使用 Zend 开发 Web 服务,更具体地说,我是 Zend_Amf,用于与 Adob​​e Flex 互操作。这样做的问题是我不能轻易看到 PHP 错误,因为 Flex 调试器不会显示来自服务器的实际答案,除非它们是正确的 Amf。如果我使用 Web 浏览器访问 Zend_Amf 端点,我不会收到任何错误,因此错误是在执行 Amf 处理程序时发生的。现在我正在使用 firebug 来检查 HTTP 流量以查看任何错误。

对于我的问题:我可以使用日志实用程序(如 Zend_Log)将所有 PHP 错误、警告和通知记录到文件中,而不是(或除此之外)在 HTTP 响应中发送它们吗?

4

2 回答 2

2

您可以使用它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');

值得注意的是,即使结合这两种方法,它也不会捕获所有错误,例如语法错误....但是您可以使用普通浏览器看到这种错误。

于 2010-02-03T09:13:04.833 回答
0

我不确定我的解决方案是否会对您有所帮助。但是,如果您的应用程序由于抛出异常而终止,并且触发了默认的 errorController。那么你可能想看看http://blog.elinkmedia.net.au/2009/10/23/application-logging-with-zend_log/

我基本上在引导期间注册了一个记录器实例,并使用它在错误控制器中记录错误。

于 2010-02-11T03:46:11.747 回答