大家好我正在使用Zend框架并且讨厌这样一个事实:我似乎遇到了数百个异常错误,就像我试图引用一个对象的非existant属性我的应用程序刚刚死亡和崩溃。但是我不知道在哪里可以看到这些错误或者如何能够在屏幕上显示它们。我将显示错误设置为true并将错误报告设置为E_ALL,但是当抛出错误时,我看到的只是一个空白页面,直到错误显然发生或抛出异常之前的一段时间。
请帮助我的调试时间拖动
答案 0 :(得分:4)
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
或者你总是会变得丑陋并且破坏你的公共/ 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 :(得分: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
答案 2 :(得分:1)
在PHP中引用不存在的属性是错误,而不是异常。如果在php.ini中启用display_errors,则错误通常在html的输出中。但要注意:它们也可以出现在一个看不见的html标签中:
<div style="display:none"><? echo $object->nonexistant?> ...
...所以你需要检查页面的HTML输出(在firefox中 CTRL-U )并滚动到底部