問題
アプリケーションのエラーが、期待通りにPHPエージェントに報告されない、または捕捉されない。
解決
サードパーティのエラーハンドラ を使用している場合(例: XDebug または Laravel のエラーハンドラ):
- サードパーティのエラーハンドラを無効にする。
- エラーが報告されていることを確認するには、 APM errors page を参照してください。
サードパーティ製のエラーハンドラを使用していない場合 それでも期待したエラーが表示されない場合(例: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 呼び出しを使用してこれらのエラーを手動で計測します。