カテゴリ: PHP 更新日: 2026/01/04

PHPのエラーログを完全ガイド!初心者でもわかるerror_logとログ解析の基本

PHP のエラーログの記録と解析(error_log, logging)
PHP のエラーログの記録と解析(error_log, logging)

先生と生徒の会話形式で理解しよう

生徒

「PHPでエラーが出たときに、画面には何も表示されないのに、どこかに記録されていると聞いたんですが、本当ですか?」

先生

「本当ですよ。PHPにはエラーログという仕組みがあって、エラーの内容をファイルに記録しておくことができます。error_logという関数や設定を使います。」

生徒

「エラーログって、どうやって確認したり解析したりすればいいんでしょうか?初心者でも扱えますか?」

先生

「もちろん初心者でも扱えますよ。今日は、PHP のエラーログの記録方法と、error_log関数の使い方、それからログの読み方や解析の基本まで、順番に説明していきます。」

-

1. PHPのエラーログとは?なぜ記録と解析が大事なのか

1. PHPのエラーログとは?なぜ記録と解析が大事なのか
1. PHPのエラーログとは?なぜ記録と解析が大事なのか

PHPのエラーログとは、PHPの実行中に発生したエラーや警告、注意メッセージなどを、テキストファイルなどに記録しておく仕組みです。 表示されなかったエラーも、エラーログを見れば「いつ」「どこで」「どんなエラーが起きたか」を後から確認できます。

例えば、利用者がアクセスしたときだけ発生するエラーや、特定の時間帯にだけ発生する不具合は、開発者の画面では再現できないことがあります。 そうしたときに、エラーログが残っていれば、原因を探すための手がかりになります。

エラーログは、いわば「PHPプログラムのカルテ」のようなものです。どこが具合悪かったのか、いつ症状が出たのかを記録してくれるので、 初心者の段階からエラーログの記録と解析に慣れておくと、トラブル対応がとても楽になります。

2. PHPのerror_log関数の基本的な使い方

2. PHPのerror_log関数の基本的な使い方
2. PHPのerror_log関数の基本的な使い方

PHPでは、プログラムの中から自分でエラーログを書き込みたいときに、error_log関数を使います。 これは「好きなメッセージをログに送る」ための関数で、エラーだけでなく、デバッグ用のメモを残す用途にも便利です。


<?php
error_log("テスト用のエラーログメッセージです。");
?>

このコードを実行すると、サーバーのエラーログに「テスト用のエラーログメッセージです。」という文字が出力されます。 どこに出力されるかは、PHPの設定(php.ini)で決まっています。

error_logは、システムが自動で出してくれるエラーメッセージとは別に、「自分で状況を説明するログ」を残したいときに使うと、後から解析しやすくなります。

3. エラーログの出力先を設定する(php.iniと設定項目)

3. エラーログの出力先を設定する(php.iniと設定項目)
3. エラーログの出力先を設定する(php.iniと設定項目)

PHPのエラーログは、php.iniという設定ファイルで出力先や出力方法を指定できます。 サーバーの管理画面や設定ファイル編集を通して、次のような項目を確認・設定します。

  • log_errors:エラーログを記録するかどうか(On / Off)
  • error_log:エラーログを書き込むファイルのパス
  • error_reporting:どのレベルのエラーを記録するか

例えば、ログを有効にして専用ファイルに出力したい場合は、下記のような設定になります。


; php.ini の一例(実際は設定ファイルで編集)
log_errors = On
error_log = "/var/log/php_errors.log"
error_reporting = E_ALL

E_ALLは「Notice から Fatal Error まで、すべてのエラーを対象にする」という意味です。 本番環境では画面にエラーを表示せず、エラーログにだけ出力する設定がよく使われます。

4. ファイルにエラーログを書き込む実践例

4. ファイルにエラーログを書き込む実践例
4. ファイルにエラーログを書き込む実践例

実際に、PHPのコードからエラーログファイルへメッセージを書き込むサンプルを見てみましょう。 error_log には第二引数以降を指定することで、出力方法を細かく制御できます。


<?php
$message = "ユーザーID: 123 でエラーが発生しました。";
$file = __DIR__ . "/app_error.log";

// 第2引数に 3 を指定すると、指定したファイルに追記される
error_log($message . PHP_EOL, 3, $file);
?>

この例では、app_error.logという独自のログファイルを用意し、そこにエラーログメッセージを書き込んでいます。 アプリケーション専用のログを作ることで、サーバー全体のログとは別に、自分のシステムだけの記録を残せます。

PHP_EOLは「改行コード」を表す定数で、ログを読みやすくするために行の終わりに付けるのが一般的です。

-

5. ログファイルの読み方と基本的な解析の考え方

5. ログファイルの読み方と基本的な解析の考え方
5. ログファイルの読み方と基本的な解析の考え方

エラーログには、通常「日時」「エラーの種類」「メッセージ」「発生したファイル名と行番号」などが記録されています。 初心者がまず見るべきポイントは次の3つです。

  • いつエラーが発生したか(日時)
  • どのファイルの何行目か(場所)
  • どんな内容のエラーか(メッセージ)

例えば、次のようなエラーログがあったとします。


[2025-01-01 10:00:00] PHP Warning:  Undefined array key "name" in /var/www/html/index.php on line 25

この場合、「index.php の25行目で、nameという配列のキーが見つからない」という意味になります。 その行のコードを確認し、$data["name"] を使う前に存在チェックを入れるなどの対策を行います。

ログの解析は、一気に全部を理解しようとするのではなく、「1行ずつ翻訳してみる」感覚で読み解くと理解が進みます。

6. 開発環境と本番環境でのエラーログ運用の違い

6. 開発環境と本番環境でのエラーログ運用の違い
6. 開発環境と本番環境でのエラーログ運用の違い

PHPのエラーログやエラー表示は、開発環境と本番環境で設定を変えるのが一般的です。 開発中は画面にエラーを表示したほうが便利ですが、本番では利用者に内部エラーを見せないほうが安全だからです。

そのため、次のような方針で運用することが多いです。

  • 開発環境:エラーを画面に表示+エラーログにも記録
  • 本番環境:エラーは画面に表示せず、ログだけに記録

画面表示に関する設定は、display_errors という項目で制御できます。


; 開発環境の一例
display_errors = On
log_errors = On

; 本番環境の一例
display_errors = Off
log_errors = On

本番環境では、エラーログをきちんと記録し、それを定期的に確認することが大切です。 特に、Warning や Fatal Error が頻発していないかをチェックすることで、障害の予兆を早めに発見できます。

7. エラーログとアプリケーションログを組み合わせた実践的なlogging

7. エラーログとアプリケーションログを組み合わせた実践的なlogging
7. エラーログとアプリケーションログを組み合わせた実践的なlogging

PHPのエラーログだけでなく、自分のアプリケーション用のログも組み合わせて記録すると、より細かい解析ができるようになります。 例えば、ユーザーIDや処理内容、実行時間なども一緒にログに書き込むと、後から「どのユーザー操作で不具合が起きたのか」を追いやすくなります。


<?php
function app_log($message)
{
    $file = __DIR__ . "/app.log";
    $time = date("Y-m-d H:i:s");
    error_log("[$time] " . $message . PHP_EOL, 3, $file);
}

app_log("ユーザーID=123 の注文処理を開始しました。");
?>

このように、自分で簡易的なロギング機能を作り、エラーログと合わせて運用することで、 PHPのエラーハンドリングとログ解析が一体となった、実践的なトラブル対応ができるようになります。

初心者のうちから「エラーは隠すのではなく、ログとして残して後から解析する」という考え方に慣れておくと、 PHPの開発スキルだけでなく、運用や保守の観点でも大きな強みになります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
New2
PHP
PHPのスコープとは?グローバル・ローカル・スーパーグローバルを完全解説!
New3
PHP
PHPの演算子をやさしく解説!算術・比較・論理・ビット演算子の使い方
New4
PHP
PHP の変数とは?基本的な使い方とデータ型を徹底解説!
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.2
Java&Spring記事人気No2
Python
Pythonで辞書のキー・値・アイテムを取得する方法(keys(), values())
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
No.5
Java&Spring記事人気No5
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.6
Java&Spring記事人気No6
PHP
PHPで画像ファイルをアップロードする方法を初心者向けに徹底解説!わかりやすい画像処理入門
No.7
Java&Spring記事人気No7
PHP
PHP のデータ型を完全ガイド!初心者でもわかる int, string, float, bool など
No.8
Java&Spring記事人気No8
PHP
PHP の日付と時間の取得(date, time, strtotime)を完全解説!初心者でもわかる使い方
-
-