使用Zend框架时显示php错误

时间:2009-07-29 17:05:13

标签: php zend-framework

我一直在使用Zend Framework并暂时解决这个问题,但现在它已经太烦人了,所以我会把问题发给你。

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

似乎存在Zend Framework失败并通过php显示错误的一些问题,比如某个函数不存在或某些东西。那些我能看到并修复的东西。

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

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

9 个答案:

答案 0 :(得分:32)

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

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

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

另外,如果您使用1.8附带的新Autoloader,请使用:

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

允许发布失败的include / require语句。

答案 1 :(得分:12)

对于遇到此问题的其他人:我在configs / application.ini

中更改了以下行
resources.frontController.params.displayExceptions = 0

要:

resources.frontController.params.displayExceptions = 1

这让我可以看到完整的Exception,包括stacktrace。

答案 2 :(得分:11)

在配置中设置:

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

答案 3 :(得分:8)

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

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

答案 4 :(得分:6)

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

只需将以下函数放在Bootstrap.php文件中即可启用例外..

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

答案 5 :(得分:1)

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

phpSettings.display_errors = 0 

phpSettings.display_errors = 1

现在它会显示错误。

答案 6 :(得分:1)

快速而肮脏的决定,如果没有提到的方法有效(对于旧的或丑陋配置的ZF版本有用):

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

答案 7 :(得分:0)

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

 /var/log/apache2/error.log

我用vim打开这个文件并输入:e刷新,G到页面底部,看到最新的错误,当我得到空白页面。它告诉你错误发生的时间,消息和行,所以它非常有用。

答案 8 :(得分:0)

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

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