2011-05-04 60 views
2

在我的ZF項目的application.ini中,我設置了「resources.frontController.params.displayExceptions = 1」。但是,如果拋出異常,則瀏覽器中不會顯示異常。Zend Framework - displayExceptions屬性不起作用

綜觀生成的ErrorController.php的代碼,它看起來像這行:

如果($這個 - > getInvokeArg( 'displayExceptions')==真)

總是失敗,這條件。

我是新來的採埃孚,所以有可能是明顯的我失蹤 - 但我不知道爲什麼它沒有被設置。它似乎正在處理application.ini文件,因爲如果連接不到數據庫,它將無法連接到我的數據庫。


編輯

就發現了線索:

我改變了我的modules目錄。我剛剛撤消了這一改變,並且這個問題不再發生。但是,我確實想要更改模塊目錄。下面是我所作的更改的列表:

在我的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

是什麼調試器告訴你嗎?或Zend_Debug ::轉儲()這些變量? – markus 2011-05-04 13:36:33

+0

@markus我應該看什麼變量?對不起,我是ZF的新手,所以不太確定如何以編程方式訪問這些application.ini設置。我嘗試拋出Zend_Controller_Front :: getInstance() - > getParams(),但沒有任何有用的東西。 – Dan 2011-05-04 14:21:53

+0

什麼是您的應用程序環境?通常它應該設置爲'development'以顯示異常。 – Vika 2011-05-04 14:24:25

回答

0

終於搞定了。我的引導程序初始化發生順序錯誤。

protected function _initFrontController() 
{ 
    $front = Zend_Controller_Front::getInstance(); 
    $front->addModuleDirectory(dirname(__FILE__) . '/modules'); 
    $front->setDefaultModule('frontend'); 

    return $front; 
} 

然後,而不是把第一的三行在_initAutoLoad以上方法,我把我的自動加載設置:我通過完全去除這種引導方式固定它。

4

我有_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 frameworkHow do I display exception errors thrown by Zend frameworkZend Framework - not all errors are shown

祝你好運!


這可能會解決您的問題。在_initAutoload功能您的應用程序的自舉文件中添加以下語句

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 
+0

我也有這些設置。 – Dan 2011-05-04 14:19:57

+0

好吧,看看我的更新。 – 2011-05-04 15:34:42

+0

不幸的是,這也行不通:我會嘗試做一些挖掘Zend代碼,看看它在底下做什麼。 – Dan 2011-05-04 18:20:23

1

我有這個相同的問題,並將其追溯到.ini文件。

對我來說,由於.ini文件的區分大小寫,因此.ini中的displayExceptions值沒有在ErrorController中讀取。

嘗試將「frontController」的所有實例更改爲「frontcontroller」(從控制器中的C中刪除大寫),它應該可以解決您的問題。

前:

resources.frontController.params.displayExceptions = 1 

後(小寫C):

resources.frontcontroller.params.displayExceptions = 1