web-dev-qa-db-ja.com

Zendフレームワークの使用時にPHPエラーを表示する

私はZend Frameworkを使用しており、しばらくの間この問題に対処していますが、今では煩わしくなりすぎたので、質問を送信します。

Zendが認識できるZendフレームワーク内の特定の問題(存在しないコントローラーの呼び出しなど)があり、その問題をErrorControllerに送信します。私はそれがうまく機能している。

特定の関数が存在しない場合など、Zend Frameworkが失敗し、phpを介してエラーが表示されるという問題があるようです。私が見て修正できるもの。

ただし、Zendが失敗しないこともありますが、空の応答が送信されるだけです。空白のページが表示されます。それらのレイアウトは表示されず、コードもなければ、何が問題になっているのかを知るための何ものもありません。前回、失敗したrequire()がありました。私はフィードバックなしで手動でこれを理解しなければなりませんでした。

これを経験した人はいますか?これらのエラーを表示する方法についてアドバイスはありますか?何か助けていただければ幸いです!

24
Ethan

フレームワークのMVCコンポーネントの内部エラー処理は、PHPエラーではなく、例外のみをトラップできます。

開発中のデバッグを支援するために、次の標準を使用できます。

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

また、1.8に含まれている新しいAutoloaderを使用している場合は、次を使用します。

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

失敗したinclude/requireステートメントを発行できるようにするため。

32
jason

この質問に遭遇した他の人のために:configs/application.iniの次の行を変更しました

resources.frontController.params.displayExceptions = 0

に:

resources.frontController.params.displayExceptions = 1

これにより、スタックトレースを含む完全な例外を確認できました。

12
Niels Bom

これを設定に設定します:

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
11
Kamilos

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

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

8
Brian

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

例外を有効にするには、Bootstrap.phpファイルに次の関数を配置するだけです。

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

すでに言及されている方法のいずれも機能しなかった場合の高速でダーティな決定(ZFの古いバージョンまたは醜い構成のバージョンに役立ちます):

  • アプリケーションのErrorControllerを見つけます。
  • debug_print_backtrace関数の呼び出しをinitメソッドの先頭に配置します(オプションでdie()を使用)。
1
Vasiliy Toporov

Urproject/application/configを開き、application.iniを開きます
2行目を変更します。

phpSettings.display_errors = 0 

phpSettings.display_errors = 1

エラーが表示されます。

1
piyush

ここで与えられた答えがうまくいかなかった人は、いつでもApacheログにアクセスして問題の説明を見ることができます。もちろんこれがページに表示されていればもっと便利でしょうが、私はそれが許容できる代替手段であると思います。

 /var/log/Apache2/error.log

このファイルをvimで開いて、:eと入力して更新し、Gを入力してページの下部に移動し、空白のページを取得したときに最新のエラーを表示します。エラーが発生した時間、メッセージ、行が表示されるので、非常に役立ちます。

0
grasshopper

これらの行をapplication/configs/config.phpに配置します

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