在我的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标志没有被正确设置)。
知道为什么这会导致这种症状吗?
我在_initAutoload在boostrap文件
$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工具创建了一个zf项目,它完成了所有的配置。
实际上,当我遇到这个问题时,suppressNotFoundWarnings(false)
为我解决了这个问题。然而,我发现一个可能的重复显示php错误时,使用Zend框架和我如何显示异常错误抛出的Zend框架和Zend框架-不是所有的错误都显示
祝你好运!
这可能解决你的问题。在应用程序引导文件的_initautolload函数中添加以下语句
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
我遇到了同样的问题,并将其追溯到。ini文件。
对于我来说,由于。ini文件的大小写敏感性,在ErrorController中没有读取。ini中的displayExceptions值。
尝试将"frontController"的所有实例更改为"frontController"(去掉controller中C的大写字母),它应该可以解决您的问题。
:
resources.frontController.params.displayExceptions = 1
(小写C)后:
resources.frontcontroller.params.displayExceptions = 1
终于算出来了。我的bootstrap初始化顺序错误。我通过完全删除这个bootstrap方法来修复它:
protected function _initFrontController()
{
$front = Zend_Controller_Front::getInstance();
$front->addModuleDirectory(dirname(__FILE__) . '/modules');
$front->setDefaultModule('frontend');
return $front;
}
然后将它的前三行放在上面的_initautolload方法中,我在这里设置了自动加载设置