2009-07-29 61 views
22

我一直在使用Zend Framework,只是在這個問題上生活了一段時間,但它現在變得太煩人了,所以我會把問題發給你。使用Zend框架時顯示php錯誤

Zend框架中存在一些Zend可以識別的問題(例如調用不存在的控制器),並將該問題發送給ErrorController。我的工作很好。

似乎有一些問題,Zend框架將失敗,並通過PHP顯示錯誤,如果某個函數不存在或什麼的。那些我可以看到並修復的。

雖然有時候,Zend不會失敗,但它也只會發出一個空的迴應。我會得到一個空白頁。他們的佈局沒有出現,沒有代碼,沒有任何東西可以讓我知道什麼地方出了問題。最後一次,有一個require()失敗。我不得不手動解決這個問題,沒有任何反饋。

有沒有人遇到過這個?你有什麼建議如何讓這些錯誤顯示?任何幫助,將不勝感激!

回答

31

框架的MVC組件的內部錯誤處理只能捕獲異常,而不是PHP錯誤。

在開發過程中幫助調試,您可以使用標準:

error_reporting(E_ALL|E_STRICT); 
ini_set('display_errors', 'on'); 

此外,如果您使用的是新的自動裝彈機附帶1.8,使用:

Zend_Loader_Autoloader::getInstance()->suppressNotFoundWarnings(false); 

要允許失敗包括/要求發表聲明。

+0

這是我已經錯過了suppressNotFoundWarnings。非常感謝!你不知道這會節省多少時間。 – Ethan 2009-07-29 17:18:37

+0

這很奇怪,因爲該手冊說默認情況下ZF不會執行錯誤抑制:http://framework.zend.com/manual/1.12/en/zend.loader.autoloader.html – 2014-07-27 15:14:13

12

對於其他人來過這個問題:我改變了CONFIGS以下行/的application.ini

resources.frontController.params.displayExceptions = 0 

要:

resources.frontController.params.displayExceptions = 1 

這讓我看到了完整的異常,包括堆棧跟蹤。

7

編輯文件public/index.php。
將APPLICATION_ENV更改爲'development'。

這將使用application/configs/application.ini文件中的開發設置。這些設置定義是否抑制錯誤。

+0

這是適合我的解決方案,謝謝! – leticia 2012-10-02 03:24:10

11

設置這在你的配置:

phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
resources.frontController.params.displayExceptions = 1 
+0

+1真棒!!!!!這些線是純粹的魔術!謝謝! – diosney 2012-04-13 14:58:53

1

打開urproject /應用/配置和開放application.ini
更改第二行:

phpSettings.display_errors = 0 

phpSettings.display_errors = 1 

現在將顯示錯誤。

5

現在回答這個問題爲時已晚。但希望它能幫助別人......

只要將下面的函數在你的bootstrap.php文件以啓用例外..

protected function _initErrorDisplay(){ 
     $frontController = Zend_Controller_Front::getInstance(); 
     $frontController->throwExceptions(true); 
    } 
1

快速和骯髒的決定,如果沒有的已經提到的方法工作了舊的或醜陋的配置版本的ZF(有用):

  • 找到您的應用程序的ErrorController。
  • 把debug_print_backtrace函數的調用在init方法的頂部(與模具()可選)
0

任何人對他們來說,這裏給出的答案沒有工作,一個可以隨時去到Apache日誌看到問題的描述。如果它顯示在頁面上,它當然會更方便,但我覺得它是一個可以接受的選擇。

/var/log/apache2/error.log 

我有這個文件,用vim和開放型:電子刷新和G轉到頁面底部看到最近的錯誤,當我得到的空白頁。它會告訴你發生錯誤的時間,信息和行,所以這很有幫助。

0

把這些線路中的應用/ CONFIGS/config.php文件

error_reporting(E_ALL|E_STRICT); 
ini_set('display_errors', 'on');