問題
アプリケーションのエラーが、期待通りにPHPエージェントに報告されない、または捕捉されない。
解決
using a third party error handlerの場合 (例: XDebugまたはLaravel のエラー ハンドラー) :
- サードパーティのエラーハンドラを無効にする。
- エラーが報告されていることを確認するには、 APM errors page を参照してください。
not using a third party error handlerであるにもかかわらず、依然として 応答エラー (例: 404 エラー) が表示されない場合:
- PHP がエラーを処理していることを確認してください。なぜなら、New Relic は PHP が認識できないエラー (Web サーバー上の静的資産の 404 エラーなど) を報告できないからです。
newrelic_notice_error()
API 呼び出しを使用して、発生が予想されるエラーを手動で計測します。- エラーが報告されていることを確認するには、 APM errors page を参照してください。
原因
PHPはエラーを自身のデフォルトハンドラで処理します。XDebugやLaravelのエラーハンドラのような多くのサードパーティのハンドラは、しばしばPHPのデフォルトハンドラを上書きし、PHPの代わりにエラーを捕捉します。
PHPエージェントには独自のエラーハンドラがあり、PHPがエラーを捕捉することに依存しています。1つのエラーを処理できるのは1つのハンドラーだけなので、エージェントは、PHPに捕捉される前にサードパーティのハンドラーによって既に処理されたエラーを見ることはありません。
さらに、一部のエラー (例: 404 エラー) は Web サーバー レベルで発生することがよくあります。これは、PHP が関与することはなく、エラーがエージェントによってキャプチャされることもありません。PHP を使用して 404 エラーを処理する場合は、 newrelic_notice_error()
API 呼び出しを使用してこれらのエラーを手動で計測します。