2017-03-11 15 views
0

私はZF2でアプリケーションを構築しています。 私はこのラインで新しい例外をtrhrowとき、私は、アプリケーションにいくつかのデータをPOSTするために、AJAXを使用して:ZF2 PHP例外

throw new \Exception("Not Loged In.", 401); 

問題は、私はそれが私は2番目として何を入れても、500を返す新しいエラーをスロー毎回です例外のパラメータ。

誰でも手伝ってもらえますか?

ありがとうございます!

答えて

0

zendフレームワークの要求ライフサイクルの観点から、キャッチされない例外はすべてアプリケーションエラーです。フレームワークがHTTP 50Xに変換する前に、その例外を意味のあるHTTP応答に変換するメカニズムが必要です。

たとえば、あなたのコントローラであなたは、以下のようなものを試すことができます。

try { 
    $this->myService->tryToDoSomethingThatNeedsAuthentication(); 
} catch(AuthRequiredException $e) { 
    $this->getResponse()->setStatusCode($e->getCode()) // Assuming its 401 
     ->setReasonPhrase($e->getMessage()); 
    return; 
} catch(\Exception) { 
    // handle other exceptions here 
} 
+0

ご回答いただきありがとうございます。 ポイントは、例外をスローしたいときはいつでも、このコードブロックを「すべて」書く必要はありません。 –

0

問題は、PHPの設定です。デフォルトのApache(または他のサーバ)が短いの情報が返され、あなたの内部エラーの詳細を隠す:

エラー500 - 内部サーバーエラー

をあなたはのerror_reportingを有効にする必要がありますで

をPHP:

http://php.net/manual/pl/function.error-reporting.php

Apacheの設定で

またはphp.iniにあり、.htaccessファイルで可能です。開発者の作業には、すべてのエラーを表示する必要があります。