障害・トラブル対応

WordPress のエラーログはどこにあり、どう読むか

「エラーログを見てください」と言われたものの、そのログがどこにあるのか分からない。サーバーの管理画面を開いてみたが、それらしいものが複数あってどれのことか判断できない——という状況で読まれることを想定した記事です。

先に結論

  • WordPress サイトのログは3種類あり、それぞれ別の場所にあります
  • 症状によって見るべきログが違います。片方が空でも、もう片方には出ています
  • WordPress のログは既定では取られていません。設定を書いて初めて記録が始まります
  • 🚨 調べ終わったらログの設定を必ず戻してください。公開領域に残ると内部情報が外から読めます

ログは3種類ある

「エラーログ」と一口に言っても、WordPress サイトには性質の違うログが3つあります。混乱の原因はここです。

1. WordPress のデバッグログ

WordPress 自身が書き出すログです。プラグインやテーマの中で起きたエラーが、どのファイルの何行目かまで記録されます。原因のプラグインを特定したいときは、まずこれです。

ただし既定では無効です。何も設定していないサイトでは、このログは存在しません。「ログが無い」のではなく「まだ取っていない」状態です。

2. サーバー(PHP)のエラーログ

PHP が実行中に出したエラーを、サーバー側が記録するものです。WordPress が起動する前に落ちた場合や、メモリ不足で強制終了した場合は、WordPress のログには何も残らず、こちらにだけ出ます。

場所はサーバーによって違います。多くのレンタルサーバーでは管理画面に「エラーログ」「PHP ログ」といった項目があり、そこから閲覧またはダウンロードできます。ファイルとして置かれる場合は、公開ディレクトリの外に置かれているのが普通です。

3. Web サーバーのアクセスログ・エラーログ

どの IP アドレスから、いつ、どの URL に、どんな結果(200・403・404・500 など)を返したかの記録です。「表示されない」「アクセスできない」が本当に起きているのかを確かめるときや、不審なアクセスを調べるときに使います。

症状から、見るべきログを決める

  • 「重大なエラーが発生しました」と出る → WordPress のデバッグログ。原因のプラグインまで分かります(この画面が出たときの対処はこちら
  • 真っ白で何も出ない → サーバーの PHP エラーログ。WordPress が起動する前に落ちている可能性があります(表示されないときの切り分け
  • 403 や 404 が返る → Web サーバーのログ。そもそもリクエストが届いているかを確認します
  • 特定の操作だけ失敗する → WordPress のデバッグログ。操作を再現してから見ます

WordPress のログを取る設定

wp-config.php の、/* 編集が必要なのはここまでです */ というコメントよりに次の3行を書きます。

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

これで wp-content/debug.log に記録が始まります。すでに WP_DEBUG の行がある場合は、値を書き換えてください。同じ定義を2回書くと後ろが無視されます。

🚨 3行目を true にしないでください。エラーの内容が訪問者の画面にそのまま出ます。ファイルの場所や使っているソフトウェアの構成が読めてしまい、攻撃の手がかりになります。

調べ終わったら必ず戻す

wp-content/debug.log公開領域に置かれます。URL を直接指定すれば、誰でも読める状態になりえます。ログにはファイルの絶対パスや、場合によってはデータベースの問い合わせ内容まで残ります。

調査が終わったら、3行を削除し、debug.log も削除してください。「あとで消そう」と思って何年も残っているサイトは珍しくありません。

ログの読み方

行の先頭に日時、次にエラーの種類が書かれています。種類によって深刻さが違います。

  • Fatal error — そこで処理が止まったという意味。これが原因です。まずこの行を探します
  • Warning — 想定外だが処理は続いた。すぐ壊れはしないが、放置すると次の更新で Fatal になることがあります
  • Deprecated — 「その書き方は将来使えなくなる」という予告。PHP を上げる前に潰しておくべき印です
  • Notice — 軽微な指摘。大量に出ていてもすぐ問題にはなりません

Fatal error の行には、必ずファイルのパスと行番号が付いています。パスの中に wp-content/plugins/○○/ とあれば、その ○○ が原因のプラグインです。wp-content/themes/○○/ ならテーマです。

その下に続く「Stack trace」は、そこに至るまでの呼び出しの経路です。上ほど直接の発生箇所、下ほど大元の呼び出し元です。原因を知るだけなら一番上の行で足ります。

ログが出ない・空のとき

  • 設定を書いた後に、症状を再現していない — ログは設定後に起きたことしか記録しません。エラーが出る操作をもう一度実行してください
  • ファイルを書き込めていないwp-content に書き込み権限が無いと作成されません
  • WordPress より前で落ちている — サーバーの PHP エラーログを見てください
  • キャッシュが効いていて、そもそも実行されていない — キャッシュ系プラグインや CDN を一時的に無効にして再現します

ログは「異常が起きた瞬間の記録」です。後から取ろうとしても、過ぎたことは記録されていません。継続的に取っておくか、再現できるうちに取るか。更新をどう当てるかを決めるときも、この記録があるかどうかで判断の確かさが変わります。

CloudHonu サポート
オンライン|お気軽にご相談ください