我一直在使用Zend Framework并暂时解决这个问题,但现在它已经太烦人了,所以我会把问题发给你。
Zend框架中存在Zend可以识别的某些问题(例如调用不存在的控制器),并将该问题发送到ErrorController。我的工作正常。
似乎存在Zend Framework失败并通过php显示错误的一些问题,比如某个函数不存在或某些东西。那些我能看到并修复的东西。
有时候,Zend不会失败,但它也会发出空响应。我会得到一个空白页面。他们的布局没有显示,没有代码,没有什么可以让我知道出了什么问题。上一次,有一个失败的require()。我不得不在没有反馈的情况下手动解决这个问题。
你们有没有经历过这个?您对如何显示这些错误有任何建议吗?任何帮助将不胜感激!
答案 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版本有用):
答案 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');