在我的ZF项目的application.ini中,我设置了" resources.frontController.params.displayExceptions = 1"。但是,如果抛出异常,则不会在浏览器中显示异常。
查看生成的ErrorController.php中的代码,它看起来像是:
if($ this-> getInvokeArg(' displayExceptions')== true)
总是没有这种情况。
我是ZF的新手,所以我可能会发现一些显而易见的东西 - 但我不知道为什么它没有被设置。它似乎正在处理application.ini文件,因为它不能连接到我的数据库,如果它不是。
修改
刚刚找到了线索:
我更改了我的模块目录。我刚刚撤消了这个改变,这个问题不再发生了。但是,我确实想要更改模块目录。这是我所做的更改列表:
在我的application.ini中,我添加了:
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
在我的Bootstrap课程中,我补充道:
protected function _initFrontController()
{
$front = Zend_Controller_Front::getInstance();
$front->addModuleDirectory(dirname(__FILE__) . '/modules');
$front->setDefaultModule('frontend');
return $front;
}
这似乎成功处理了模块的新位置,并且该网站正常工作(除了没有正确设置displayExceptions标志)。
为什么会导致这种症状的任何想法?
答案 0 :(得分:4)
我在boostrap文件中有_initAutoload
$modelLoader = new Zend_Application_Module_Autoloader ( array (
'namespace' => '',
'basePath' => APPLICATION_PATH . '/modules/default' ) );
并在application.ini
中resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules = ''
resources.frontController.params.displayExceptions = 1
它对我来说很好。您的模块配置似乎不正确。但是我使用cli工具创建了m zf项目,它完成了所有配置。
实际上,当我遇到这个问题时suppressNotFoundWarnings(false)
为我解决了这个问题。但是我找到了一个可能的共和主义Display php errors when using Zend framework和How do I display exception errors thrown by Zend framework以及Zend Framework - not all errors are shown
这可以解决您的问题。在_initAutoload函数的应用程序boostrap文件中添加以下语句
Zend_Loader_Autoloader::getInstance()->suppressNotFoundWarnings(false);
当处于开发模式时,新的自动加载器实际上会告诉您语法错误,而不是向您显示白页。
也许您在application.ini文件中缺少更多信息。在我的application.ini中我有
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
答案 1 :(得分:1)
我遇到了同样的问题,并将其追溯到.ini文件。
对我来说,由于.ini文件区分大小写,因此无法在ErrorController中读取.ini的displayExceptions值。
尝试将“frontController”的所有实例更改为“frontcontroller”(从控制器中的C中删除大小写),它应该可以解决您的问题。
<强>之前:强>
resources.frontController.params.displayExceptions = 1
之后(小写C):
resources.frontcontroller.params.displayExceptions = 1
答案 2 :(得分:0)
终于解决了。我的bootstrap初始化发生的顺序错误。我通过完全删除了这个引导程序来修复它:
protected function _initFrontController()
{
$front = Zend_Controller_Front::getInstance();
$front->addModuleDirectory(dirname(__FILE__) . '/modules');
$front->setDefaultModule('frontend');
return $front;
}
然后把它的前三行放在我设置自动加载设置的_initAutoLoad方法中。