Zend框架- displayExceptions属性不工作


Zend Framework - displayExceptions property not working

在我的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方法中,我在这里设置了自动加载设置