私はZF2でアプリケーションを構築しています。 私はこのラインで新しい例外をtrhrowとき、私は、アプリケーションにいくつかのデータをPOSTするために、AJAXを使用して:ZF2 PHP例外
throw new \Exception("Not Loged In.", 401);
問題は、私はそれが私は2番目として何を入れても、500を返す新しいエラーをスロー毎回です例外のパラメータ。
誰でも手伝ってもらえますか?
ありがとうございます!
私はZF2でアプリケーションを構築しています。 私はこのラインで新しい例外をtrhrowとき、私は、アプリケーションにいくつかのデータをPOSTするために、AJAXを使用して:ZF2 PHP例外
throw new \Exception("Not Loged In.", 401);
問題は、私はそれが私は2番目として何を入れても、500を返す新しいエラーをスロー毎回です例外のパラメータ。
誰でも手伝ってもらえますか?
ありがとうございます!
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
}
問題は、PHPの設定です。デフォルトのApache(または他のサーバ)が短いの情報が返され、あなたの内部エラーの詳細を隠す:
エラー500 - 内部サーバーエラー
をあなたはのerror_reportingを有効にする必要がありますで
Apacheの設定でをPHP:
またはphp.iniにあり、.htaccessファイルで可能です。開発者の作業には、すべてのエラーを表示する必要があります。
ご回答いただきありがとうございます。 ポイントは、例外をスローしたいときはいつでも、このコードブロックを「すべて」書く必要はありません。 –