PHPエラーログの完全ガイド!設定から解析までの5ステップ – Japanシーモア

PHPエラーログの完全ガイド!設定から解析までの5ステップ

PHPエラーログの完全ガイドのカバー画像PHP
この記事は約5分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

このサービスは複数のSSPによる協力の下、運営されています。

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

●エラーログとは

エラーログとは、プログラムが実行中に発生したエラー情報を記録したものです。

これにより、何がどこで問題を起こしたのかを特定し、解決に向けての手がかりを得ることができます。

特に、PHPでの開発ではエラーログは重要なデバッグツールとなります。

●PHPエラーログの生成方法

PHPでは、エラーログを生成するためには、まずエラーレポーティングを設定し、次にエラーログの出力設定を行う必要があります。

○サンプルコード1:エラーレポーティングの設定

このコードは、PHPでエラーレポーティングを設定する例です。

この例では、すべてのエラーを報告するように設定しています。

<?php
error_reporting(E_ALL);
?>

○サンプルコード2:エラーログの出力設定

このコードは、エラーログをファイルに出力する設定を行う例です。

この例では、エラーログを”log/errors.log”というファイルに出力します。

<?php
ini_set('log_errors', 'On');
ini_set('error_log', 'log/errors.log');
?>

●PHPエラーログの使い方

設定が完了したら、エラーログを確認してみましょう。

次のサンプルコードでは、エラーログを表示する方法を示しています。

○サンプルコード3:エラーログの確認方法

このコードは、エラーログの内容を表示する例です。

この例では、”log/errors.log”というファイルからエラーログを読み取り、その内容を表示します。

<?php
$error_log = file_get_contents('log/errors.log');
echo $error_log;
?>

●PHPエラーログの解析方法

エラーログが生成されれば、次はその内容を解析します。

エラーログは一見すると複雑に見えますが、エラーメッセージ、発生したファイルの名前と行数、エラーのタイプなどの情報を含んでいます。

○サンプルコード4:エラーログの解析例

このコードは、エラーログから特定の情報を抽出する例を示しています。

この例では、エラーメッセージと発生した行数を抽出しています。

<?php
$error_log = file('log/errors.log');

foreach ($error_log as $line) {
    preg_match('/^(.*): (.*) in (.*) on line (\d+)$/', $line, $matches);
    $error_type = $matches[1];
    $message = $matches[2];
    $file = $matches[3];
    $line_number = $matches[4];

    echo "エラータイプ: $error_type\n";
    echo "メッセージ: $message\n";
    echo "ファイル: $file\n";
    echo "行数: $line_number\n";
}
?>

●PHPエラーログのカスタマイズ

エラーログの形式はカスタマイズすることも可能です。

具体的には、PHPのカスタムエラーハンドラを設定することで、エラーログの出力内容を自分のニーズに合わせて変更できます。

○サンプルコード5:カスタムエラーハンドラの設定

このコードでは、PHPのカスタムエラーハンドラを設定し、エラーログの出力内容を自定義する例を紹介しています。

この例では、エラーメッセージと発生した日時、そしてエラーコードをエラーログに出力します。

<?php
function custom_error_handler($errno, $errstr, $errfile, $errline) {
    $log_entry = date("Y-m-d H:i:s") . " | エラーコード: $errno | メッセージ: $errstr | ファイル: $errfile | 行数: $errline\n";
    error_log($log_entry, 3, "log/custom_errors.log");
}

set_error_handler("custom_error_handler");
?>

●PHPエラーログの注意点と対処法

エラーログは非常に便利なツールですが、一部注意すべき点があります。

例えば、エラーログは敏感な情報を含む可能性があるため、不適切な公開は避けるべきです。

また、エラーログが巨大化すると、それ自体がパフォーマンスの問題を引き起こす可能性があります。

これを防ぐためには、定期的にエラーログを削除したり、ログのローテーションを設定したりすると良いでしょう。

まとめ

以上、PHPのエラーログについての説明を行いました。

エラーログは、プログラムが実行中に起きたエラーの詳細情報を記録する重要なツールです。

エラーログの生成方法、解析方法、カスタマイズ方法を理解することで、デバッグ作業が容易になります。

ただし、エラーログは敏感な情報を含む可能性があり、また適切な管理を行わないとパフォーマンス問題を引き起こす可能性があるため、これらの注意点を忘れずに、適切に利用していきましょう。