ホームページ > バックエンド開発 > PHPチュートリアル > カスタム エラー ハンドラーは本当に PHP の解析エラーと致命的なエラーをキャッチできますか?

カスタム エラー ハンドラーは本当に PHP の解析エラーと致命的なエラーをキャッチできますか?

Barbara Streisand
リリース: 2024-11-29 00:17:11
オリジナル
912 人が閲覧しました

Can Custom Error Handlers Really Catch Parse and Fatal Errors in PHP?

カスタム エラー ハンドラーを使用した解析エラーと致命的エラーの処理

一般に、カスタム エラー ハンドラーは解析エラーと致命的エラーを処理できないと考えられていますが、これは完全に正確ではありません。別のアプローチを利用することで、実際にカスタム エラー ハンドラーを使用してこれらのエラーをトラップして処理できます。

シャットダウン関数の使用

解析エラーと致命的なエラーを処理するための鍵register_shutdown_function() で登録されたシャットダウン関数を使用することです。この関数はスクリプトの終了時に呼び出され、捕捉されなかったエラーをインターセプトできるようになります。

エラー プリハンドラー (prepend.php)

エラー ハンドラーがすべての PHP スクリプトにアクセスできるため、prepend.php のようなファイルを先頭に追加することを検討してください。

set_error_handler("errorHandler");
register_shutdown_function("shutdownHandler");
ログイン後にコピー

エラー ハンドラー (errorHandler)

この関数は、レベルに基づいてエラーを処理し、適切にログに記録します:

function errorHandler($error_level, $error_message, $error_file, $error_line, $error_context)
{
    // Handle errors according to $error_level and log them using mylog()
}
ログイン後にコピー

シャットダウン ハンドラー(shutdownHandler)

スクリプト終了時に、この関数は残りの捕捉されなかったエラーを処理します:

function shutdownHandler()
{
    $lasterror = error_get_last();
    // Handle last error based on its type and log it using mylog()
}
ログイン後にコピー

ログ関数 (mylog)

この関数は、データベースやデータベースなどの目的の場所にエラーを記録するために使用されます。 file.

実装

このカスタム エラー処理メカニズムを設定することにより、解析エラーや致命的エラーを含むすべてのエラー レベルを処理できるようになりました。エラー処理は、prepend.php ファイルが含まれるすべてのスクリプトで一貫しています。

考慮事項

  1. エラー ログが重複する可能性があります。
  2. エラーを適切に処理するためのログ関数のカスタマイズ。
  3. エラー処理の実装

PHP.ini 構成

すべての PHP スクリプトの先頭に prepend.php を自動的に追加するには、次の行を php.ini に追加します。 :

auto_prepend_file = "/homepages/45/d301354504/htdocs/hmsee/cgi-bin/errorhandling.php"
ログイン後にコピー

このアプローチは、カスタム エラーを使用して解析エラーと致命的エラーを処理するための包括的なソリューションを提供します。ハンドラー。

以上がカスタム エラー ハンドラーは本当に PHP の解析エラーと致命的なエラーをキャッチできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート