【问题标题】:Display php errors when using Zend framework使用 Zend 框架时显示 php 错误
【发布时间】:2010-11-15 03:52:04
【问题描述】:

我一直在使用 Zend Framework 并且遇到这个问题有一段时间了,但现在它变得太烦人了,所以我会把问题发给你。

Zend 可以识别 Zend 框架中的某些问题(例如调用不存在的控制器),并将该问题发送到 ErrorController。我的工作正常。

似乎有一些问题 Zend Framework 会失败并通过 php 显示错误,比如某个函数不存在什么的。那些我可以看到并修复的。

虽然有时 Zend 不会失败,但它也会发出一个空响应。我会得到一个空白页。他们的布局没有出现,没有代码,没有什么可以让我知道出了什么问题。上次,有一个 require() 失败了。我不得不在没有反馈的情况下手动解决这个问题。

你们中有人经历过吗?您对如何显示这些错误有什么建议吗?任何帮助将不胜感激!

【问题讨论】:

    标签: php zend-framework


    【解决方案1】:

    框架的MVC组件内部错误处理只能捕获异常,不能捕获PHP错误。

    为了在开发过程中辅助调试,可以使用标准:

    error_reporting(E_ALL|E_STRICT);
    ini_set('display_errors', 'on');
    

    此外,如果您使用的是 1.8 中包含的新 Autoloader,请使用:

    Zend_Loader_Autoloader::getInstance()->suppressNotFoundWarnings(false);
    

    允许发出失败的包含/要求语句。

    【讨论】:

    【解决方案2】:

    对于遇到此问题的其他人:我在 configs/application.ini 中更改了以下行

    resources.frontController.params.displayExceptions = 0
    

    收件人:

    resources.frontController.params.displayExceptions = 1
    

    这让我可以看到完整的异常,包括堆栈跟踪。

    【讨论】:

      【解决方案3】:

      在你的配置中设置这个:

      phpSettings.display_startup_errors = 1
      phpSettings.display_errors = 1
      resources.frontController.params.displayExceptions = 1
      

      【讨论】:

      • 在什么配置文件里面?
      • 编辑 => application/configs/config.php
      【解决方案4】:

      编辑文件 public/index.php。
      将 APPLICATION_ENV 更改为“开发”。

      这将使用您的 application/configs/application.ini 文件中的开发设置。这些设置定义是否抑制错误。

      【讨论】:

        【解决方案5】:

        现在回答这个问题为时已晚。但希望它会帮助别人......

        只需将以下函数放在您的 Bootstrap.php 文件中即可启用异常..

        protected function _initErrorDisplay(){
                $frontController = Zend_Controller_Front::getInstance();
                $frontController->throwExceptions(true);
            }
        

        【讨论】:

        • 请问,您的 enable 是什么意思?它是否记录了之前未记录的异常?还是在应用程序视图中显示异常?
        【解决方案6】:

        打开 urproject/application/config 并打开 application.ini
        更改第二行:

        phpSettings.display_errors = 0 
        

        phpSettings.display_errors = 1
        

        现在它会显示错误。

        【讨论】:

          【解决方案7】:

          快速而肮脏的决定,如果已经提到的方法都不起作用(对旧的或配置丑陋的 ZF 版本有用):

          • 找到您的应用程序的 ErrorController。
          • 将 debug_print_backtrace 函数的调用放在 init 方法的顶部(可选用 die())

          【讨论】:

            【解决方案8】:

            对于此处给出的答案不起作用的任何人,可以随时访问 apache 日志以查看问题描述。如果在页面上显示它当然会更方便,但我发现它是一个可以接受的替代方案。

             /var/log/apache2/error.log
            

            我用 vim 打开这个文件,输入 :e 进行刷新,输入 G 转到页面底部,在我得到空白页面时查看最近的错误。它会告诉您错误发生的时间、消息和行,因此非常有用。

            【讨论】:

              【解决方案9】:

              将这些行放在 application/configs/config.php 中

              error_reporting(E_ALL|E_STRICT);
              ini_set('display_errors', 'on');
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-06-29
                • 1970-01-01
                • 1970-01-01
                • 2016-05-19
                • 2011-02-14
                • 2013-04-23
                相关资源
                最近更新 更多