• ログイン今すぐ開始

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

PHPエージェントがエラーを報告しない

問題

アプリケーションのエラーが、期待通りにPHPエージェントに報告されない、または捕捉されない。

解決策

サードパーティのエラーハンドラ を使用している場合(例: XDebug または Laravel のエラーハンドラ):

  1. サードパーティのエラーハンドラを無効にする。
  2. エラーが報告されていることを確認するには、 APM errors page を参照してください。

サードパーティ製のエラーハンドラを使用していない場合 それでも期待したエラーが表示されない場合(例:404エラー)。

  1. PHP がエラーを処理していることを確認してください。なぜなら、New Relic は PHP が認識できないエラー (Web サーバー上の静的資産の 404 エラーなど) を報告できないからです。
  2. newrelic_notice_error() APIコール を使用して、表示を期待するエラーを手動で計測します。
  3. エラーが報告されていることを確認するには、 APM errors page を参照してください。

原因

PHPはエラーを自身のデフォルトハンドラで処理します。XDebugやLaravelのエラーハンドラのような多くのサードパーティのハンドラは、しばしばPHPのデフォルトハンドラを上書きし、PHPの代わりにエラーを捕捉します。

PHPエージェントには独自のエラーハンドラがあり、PHPがエラーを捕捉することに依存しています。1つのエラーを処理できるのは1つのハンドラーだけなので、エージェントは、PHPに捕捉される前にサードパーティのハンドラーによって既に処理されたエラーを見ることはありません。

さらに、いくつかのエラー(例えば404エラー)はウェブサーバーレベルで発生することが多いので、PHPが関与することはなく、エージェントによってエラーが捕捉されることはありません。404エラーの処理にPHPが使われている場合は、 newrelic_notice_error() APIコール を使って、これらのエラーを手動で計測してください。

Copyright © 2022 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.