PHP でエラーをログに記録する

Olorunfemi Akinlua 2024年2月15日
  1. ini_set() を使用して PHP エラー ログを有効にする
  2. error_log() を使用して PHP でエラーをログに記録する
  3. error_reporting() を使用して PHP のエラーをブラウザに記録する
PHP でエラーをログに記録する

PHP アプリケーションを含むアプリケーションを開発する場合、エラーのログ記録は不可欠です。 したがって、PHP でエラーをログに記録する方法を知っておくことは重要です。何か問題が発生したときに、print_r()var_dump() に頼るのではありません。

この記事では、PHP でエラー ログを有効にして操作するために使用する必要があるすべての関数について説明します。

ini_set() を使用して PHP エラー ログを有効にする

まず、php.iniファイルを開いて、下の画像のようにdisplay_errorsOnに設定されているかどうかを確認します。

表示オン

さらに、php.ini ファイル内で、error_reporting 条件を確認する必要があります。 バージョンが PHP 8.1 の場合、php.ini ファイルに error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT が表示されることがあります。

ただし、念のため、次の行を追加してください。

error_reporting = E_ALL & ~E_NOTICE
error_reporting = E_ALL & ~E_NOTICE | E_STRICT
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ER… _ERROR
error_reporting = E_ALL & ~E_NOTICE

エラーを適切に記録できるようにするには、ini_set() 関数を使用してエラーのログを有効にする必要があります。 この関数を使用すると、エラー ログ オプションなどの構成オプションの値を設定できます。

オプションと値を使用して、コードベース内で PHP エラー ログを構成できます。 以下のコード スニペットは、必要なオプションと値を示しています。

ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");

PHP スクリプト内でエラーをログに記録する必要がある場合は、そのスクリプト内にそれらを含める必要があります。 DRY 原則 を維持するには、上記のコードを保持する PHP ファイルを作成し、必要なすべての PHP でそれを要求する必要があります。

require_once('error.php');

error_log() を使用して PHP でエラーをログに記録する

PHP エラー ログを有効にするように PHP 環境を構成したので、非常に重要な error_log() 関数を使用できます。

この関数を使用すると、(特に本番環境で) デバッグに print_r() および var_dump() 関数を使用することを減らし、何かが正しく機能していないことを知らせる特別なエラー テンプレートを作成します。

error_log() がどのように機能するかを示すために、この関数を使用して、ファイル入力操作の読み取りが失敗したことを通知できます。 コード スニペットでは、file_get_contents 関数を使用して PHP 入力を読み取り、$data が空の場合 (NOT 条件で true を設定します)、ファイルが読み取られません エラーステートメントがログに記録されます。

$data = file_get_contents('php://input');

if (!$data) {
    error_log("No file read. Check input conditions or values.");
}

file_get_contents() 関数への入力がない場合のコードの出力は以下のとおりです。

No file read. Check input conditions or values.

ご覧のとおり、error_log() 関数は message 引数を取ります。 その引数とは別に、message_typedestination、および additional_headers 引数を取ります。

さまざまなログ タイプによって、error_log 関数に解析する整数値が定義されます。 詳細については、PHP ドキュメント を参照してください。

たとえば、エラー メッセージを PHP システム ロガーに送信する場合は、メッセージ タイプとして 0 を使用します。

また、以下のコード スニペットのように、メッセージ タイプ 3 を使用してファイル保存先に保存することもできます。

error_log("No file read. Check input conditions or values.", 3, "/my-errors.log");

error_reporting() を使用して PHP のエラーをブラウザに記録する

ini_set() 関数とは別に、報告する PHP エラーを設定できます。 error_reporting() 関数がそれを助けてくれます。

私たちが作成したエラー PHP ファイルは、それを必要とするすべての PHP ファイルで必要とされることを思い出してください。 この関数とそのパラメーターをそこに追加できます。

  1. PHP コード スペース内のすべてのエラー レポートをオフにします。

    error_reporting(0);
    
  2. 単純な実行エラー (致命的な実行時エラー、実行時警告、およびコンパイル時の解析エラー) を報告するため。

    error_reporting(E_ERROR | E_WARNING | E_PARSE);
    
  3. 初期化されていない変数を報告するか、変数名のスペルミスをキャッチします (ランタイム通知)。

    error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    
  4. 実行時通知を除くすべてのエラーを報告します。

    error_reporting(E_ALL & ~E_NOTICE);
    
  5. すべての種類の PHP エラーを報告する。

    error_reporting(E_ALL);
    error_reporting(-1);
    ini_set('error_reporting', E_ALL);
    
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

関連記事 - PHP Error