2009-07-29 14 views
22

私はZend Frameworkを使用していましたが、しばらくの間この問題を抱えていましたが、ちょうど迷惑になりました。Zendフレームワークを使用しているときにPHPエラーを表示します

Zendが認識できる(存在しないコントローラを呼び出すなど)Zendフレームワークには、ErrorControllerにその問題が送信されることがあります。私はそれが正常に動作している。

Zend Frameworkが失敗し、特定の関数が存在しないかのように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); 

失敗した可能にするにはinclude/requireステートメントを発行する。この質問に出くわす他の人のために

+0

にこれらの行を置きます。どうもありがとうございます!これで私がどれくらいの時間を節約するか分かりません。 – Ethan

+0

マニュアルでZFがデフォルトでエラー抑制をしていないと言われて奇妙です:http://framework.zend.com/manual/1.12/en/zend.loader.autoloader.html –

12

:これは私がスタックトレースを含む完全な例外を、見ることができ

resources.frontController.params.displayExceptions = 1 

:私はへのconfigs /のapplication.ini

resources.frontController.params.displayExceptions = 0 

に次の行を変更しました。

7

ファイルpublic/index.phpを編集します。
APPLICATION_ENVを「開発」に変更します。

これは、application/configs/application.iniファイルの開発設定を使用します。これらの設定は、エラーを抑制するかどうかを定義します。今

phpSettings.display_errors = 1 

phpSettings.display_errors = 0 

それは:

+0

これは私のために働く解決策でしたが、ありがとう! – leticia

11

これはあなたの設定でセット:

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

+1恐ろしい!!!!!これらの行は純粋な魔法です!ありがとう! – diosney

+0

設定ファイルの中には? – rhand

+0

=> application/configs/config.phpで編集してください。 – Prabhagaran

1

オープンurproject /アプリケーション/ configおよびオープンapplication.ini
変更二行目エラーが表示されます。

5

今、この質問に答えるのは遅すぎます。しかし、それが他の誰かを助けることを願って...

すでに述べた方法のいずれもが、ZFの古いまたは醜い-構成されたバージョンのために有用(働いていない場合だけ..例外を有効にするために、あなたのbootstrap.phpのファイルに

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

あなたの 'enable'をどういう意味ですか?前にログに記録されていなかった例外をログに記録していますか?または、アプリケーションビューに例外を表示していますか? – Stephane

1

高速かつ汚い決定を次の関数を配置します):

  • アプリケーションのErrorControllerを見つけます。
  • がここに与えられた答えは動作しませんでした誰のために誰のため
0

(オプションでダイ()で)initメソッドの先頭にdebug_print_backtrace関数の呼び出しを入れて、1は常にApacheのログに行くことができます問題の説明を参照してください。もちろん、これがページに表示されていればもっと便利だろうが、私はそれが容認できる選択肢だと思う。私は空白のページを取得するときに最新のエラーを確認するには、ページの一番下に移動するとGをリフレッシュするE:

/var/log/apache2/error.log 

私はvimのとタイプしてこのファイルを開いています。エラーが発生した時刻、メッセージ、行が表示されますので、かなり役立ちます。

0

は、それは私が逃したと思いますsuppressNotFoundWarningsたアプリケーション/のconfigs/config.phpの

error_reporting(E_ALL|E_STRICT); 
ini_set('display_errors', 'on'); 
関連する問題