【问题标题】:How do I display exception errors thrown by Zend framework?如何显示 Zend 框架抛出的异常错误?
【发布时间】:2011-02-14 17:41:04
【问题描述】:

我正在使用 Zend 框架,我只是讨厌我似乎遇到了数百个异常错误,比如如果我尝试引用一个对象的不存在属性,我的应用程序就会死掉并崩溃。但是我不知道在哪里可以看到这些错误或如何在屏幕上显示它们。我已将显示错误设置为 true,并将错误报告设置为 E_ALL,但是当引发错误时,我所看到的只是一个空白页面,直到出现错误或引发异常之前的一段时间。

【问题讨论】:

    标签: php exception error-handling zend-framework


    【解决方案1】:

    APPLICATION_ENV 环境变量的值是多少。

    ZF 应用程序中的标准 public/index.php 执行以下操作:

    // Define application environment
    defined('APPLICATION_ENV')
        || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
    

    这意味着如果没有设置 APPLICATION_ENV,则环境设置为“生产”。如果您查看您的 application.ini 文件,您会发现如果环境是生产环境,框架会抑制错误。

    当然,您正在开发,所以您想使用“开发”环境。

    如果您在 Apache/mod_php 下运行,您可以在 httpd.conf 或 .htaccess 文件中进行设置:

    SetEnv APPLICATION_ENV development
    

    或者你总是会变得丑陋并破解你的 public/index.php:

    // Define application environment
    
    /*defined('APPLICATION_ENV')
        || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));*/
    
    // Ugly hack because I'm too lazy to properly set up my environment.
    define('APPLICATION_ENV','development');
    

    【讨论】:

    • +1 以获得简单的答案及其作用的解释。它有效:)
    • 感谢您提到可以在httpd.conf中设置!
    【解决方案2】:

    如果您使用 Zend Tool 创建应用程序框架,您通常会有一个错误控制器来捕获运行时错误并显示它们。您需要遵循 timdev 对SetEnv APPLICATION_ENV development 的建议,然后在您的 application/configs/application.ini 中:

    [development : production]
    
    ; This section defines config parameters loaded when the APPLICATION_ENV directive
    ; is set to 'development' - undefined parameters are inherited from the production
    ; section.
    
    ; show errors and exceptions during development
     phpSettings.display_startup_errors = 1
     phpSettings.display_errors = 1
     resources.frontController.params.displayExceptions = 1
    

    【讨论】:

      【解决方案3】:

      引用不存在的属性是 PHP 中的错误,而不是异常。如果您在 php.ini 中启用 display_errors,则错误通常出现在 html 的输出中。但请注意:它们也可以出现在不可见的 html 标记中,例如:

      <div style="display:none"><? echo $object->nonexistant?> ...
      

      ...所以您需要检查页面的 HTML 输出(在 firefox 中为 CTRL-U)并滚动到底部

      【讨论】:

      • 当我尝试访问一个似乎不存在的对象的属性时,会引发异常。考虑到有问题的对象可能有也可能没有我打算检查的属性,有没有办法解决这个问题。
      猜你喜欢
      • 1970-01-01
      • 2011-10-13
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      • 2010-11-15
      • 2012-06-11
      • 1970-01-01
      相关资源
      最近更新 更多