PHP エラー処理
PHP のデフォルトのエラー処理は簡単です。ファイル名、行番号、およびエラーを説明するメッセージを含むエラー メッセージがブラウザに送信されます。
エラー処理は、スクリプトや Web アプリケーションを作成する際の重要な部分です。コードにエラー検出コーディングが欠けていると、プログラムは専門的ではないように見え、セキュリティ リスクへの扉が開かれてしまいます。
このチュートリアルでは、PHP の最も重要なエラー検出方法のいくつかについて説明します。
さまざまなエラー処理方法について説明します:
単純な「die()」ステートメント
カスタムエラーとエラートリガー
エラーレポート
基本的なエラー処理: die() 関数の使用
最初の例は、テキスト ファイルを開くための単純なスクリプトを示しています:
<?php
$file=fopen("welcome.txt","r");
?>
ファイルが存在しない場合は、次のようなエラーが発生します:
警告: fopen(welcome.txt) [function.fopen]: ストリームを開けませんでした:
No such file or directory in /www/php/test/test.php on line 2
上記のようなエラー メッセージがユーザーに表示されるのを避けるために、ファイルにアクセスする前にファイルが存在するかどうかを確認します:
<?php if(!file_exists("welcome.txt")) { die("文件不存在"); } else { $file=fopen("welcome.txt","r"); } ?>
ファイルが存在しない場合は、ファイルが存在しないことを出力するだけです
カスタム エラー処理デバイスを作成します
カスタムエラーハンドラーの作成は非常に簡単です。 PHP でエラーが発生したときに呼び出せる専用の関数を作成しただけです。
関数は少なくとも 2 つのパラメータ (エラー レベルとエラー メッセージ) を処理できる必要がありますが、最大 5 つのパラメータ (オプション: ファイル、行番号、エラー コンテキスト) を受け入れることができます。 error_function(error_level,error_message,
error_file,error_line,error_context)Error_level 必須。ユーザー定義エラーのエラー報告レベルを指定します。数値である必要があります。以下の表を参照してください: エラー報告レベル。 error_message 必須。ユーザー定義エラーのエラー メッセージを指定します。
error_file オプション。エラーが発生したファイル名を指定します。
error_line オプション。エラーが発生した行番号を指定します。
error_context オプション。エラーが発生したときに使用されていた各変数とその値を含む配列を指定します。
エラー報告レベル
これらのエラー報告レベルは、ユーザー定義のエラー ハンドラーによって処理されるさまざまな種類のエラーです:
2 E_WARNING 致命的ではない実行時エラー。スクリプトの実行を一時停止しないでください。 8 E_NOTICE 実行時通知。スクリプトがエラーの可能性を検出したときに発生しますが、スクリプトが正常に実行されているときにも発生する可能性があります。 256 E_USER_ERROR 致命的なユーザー生成エラー。これは、プログラマが PHP 関数trigger_error()を使用して設定する E_ERROR に似ています。
512 E_USER_WARNING 致命的ではないユーザー生成の警告。これは、プログラマが PHP 関数 trigger_error() を使用して設定する E_WARNING に似ています。
1024 E_USER_NOTICE ユーザーが生成した通知。これは、プログラマが PHP 関数trigger_error() を使用して設定する E_NOTICE に似ています。
4096 E_RECOVERABLE_ERROR キャッチ可能な致命的なエラー。 E_ERROR と似ていますが、ユーザー定義のハンドラーによってキャッチされる可能性があります。 (set_error_handler() を参照)
8191 E_ALL すべてのエラーと警告。 (PHP 5.4 では、E_STRICT は E_ALL の一部になります)
エラー処理関数を作成する
<?php function customError($errno, $errstr) { echo "<b>Error:</b> [$errno] $errstr<br>"; echo "脚本结束"; die(); } ?>
上記のコードは、単純なエラー処理関数です。トリガーされると、エラー レベルとエラー メッセージが取得されます。次に、エラー レベルとメッセージを出力し、スクリプトを終了します。
エラー処理関数を作成したので、その関数をいつ起動するかを決定する必要があります
エラー ハンドラーを設定します
PHP のデフォルトのエラー ハンドラーは、組み込みエラー ハンドラーです。スクリプトの実行時に、上記の関数をデフォルトのエラー ハンドラーに変換します。
エラー ハンドラーは、特定のエラーにのみ適用されるように変更できるため、スクリプトはさまざまな方法でさまざまなエラーを処理できます。ただし、この場合、すべてのエラーに対してカスタム エラー ハンドラーを使用します
set_error_handler("customError");