WordPressエラーログの場所や出力方法とプラグイン

この記事は約11分で読めます
Facebookシェア Twitterシェア LINEシェア はてなブックマークシェア

WordPressの開発にエラーログは欠かせません。

なぜなら、テンプレートやfunctions.phpを編集する際に、構文ミスを発見しやすくなるからです。

WordPressでエラーログを吐き出させる方法は2種類あり、WordPress本体のデバッグモードとphp.iniの設定によるエラーログです。

今回は、それぞれの方法によるエラーログの特徴や、設定の方法についてわかりやすく解説し、よく発生するエラーの対処法についても紹介します。

WordPressでしっかりエラーに対処しましょう。

WordPressのエラーログとは

WordPressにはエラーを記録するために、ログを出力する機能があります。

ログとはサービスの利用状況、通信、行動などの履歴を記録したもので、中でも、エラーが発生したときに記録されるログをエラーログと呼びます。

WordPressはPHPというプログラミング言語で作られたCMS(コンテンツマネージメントシステム)です。

そのため、WordPressのエラーとはPHPのエラーと同義語で、WordPressのエラーログを出力する方法は、WordPressのデバッグモードのほかにphp.iniを編集する方法もあります。

php.iniとはPHPの全体的な動作や環境を設定するファイルで、php.iniを設定することで、WordPressのエラーを出力することができます。

デバッグモードがオフになっていても、php.iniの設定がオンになっていればそちらが優先されます。

逆に、php.iniがオフになっていても、デバッグモードがオンになっていればエラーログは記録されます。

したがって、WordPressで開発をする場合は、どちらかがオンになっていればよいでしょう。

ただし、デバッグモードはWordPressが制御する範囲のみのエラーを記録しますが、php.iniでは、PHPの制御する範囲すべてのエラーを記録できます。

WordPressのエラーログを記録する3つの方法

WordPressでエラーログを記録する方法は「php.ini」「wp-config.php」の2種類に分かれ、「php.ini」はPHP全体のエラーを記録して表示します。

エラーの出力レベルについても調整できますが、テスト環境なら「E_ALL」(すべてのエラーと警告)の設定でよいでしょう。

一方、WordPressのデバッグモードと呼ばれるwp-config.phpでのエラー出力は、WordPressの制御範囲内に限られます。

デバッグモードでは通常のエラーのほかに、WordPress非推奨の関数に対してもエラーを出力してくれます。

さらに第3の方法としては、PHPファイルにコードを直書きしてエラーを出力する方法もあります。

それぞれのエラー出力方法の特徴やポイントを把握し、適切にエラーログを出力しましょう。

php.ini

php.iniで以下のように設定を追加すると、エラーを記録できます。

ローカル環境でphp.iniの設定を変更した後は、Apacheを再起動させて変更内容を反映させましょう。

  • error_reporting = E_ALL
  • display_errors = On
  • display_startup_errors = On
  • //エラーログの作成場所
  • error_log = /フルパス/log.txt

error_reportingではエラーの種類を指定、エラーの種類は以下のように分かれています。

  • E_ALL:すべてのエラーと警告
  • E_ERROR:実行時の致命的なエラー
  • E_RECOVERABLE_ERROR:実行時のキャッチ可能な致命的なエラー
  • E_WARNING:実行時の警告(致命的ではないエラー)
  • E_PARSE:コンパイル時のパース(解析)エラー
  • E_NOTICE:実行時の通知(警告や意図的な通知)
  • E_STRICT:実行時の通知(コードの相互運用性と上位互換性を最大限に確保するためのPHPからのコード変更提案)
  • E_CORE_ERROR:PHPの初期起動時に発生する致命的なエラー
  • E_CORE_WARNING:PHPの初期起動時に発生する警告 (致命的ではないエラー)
  • E_COMPILE_ERROR:コンパイル時の致命的なエラー
  • E_COMPILE_WARNING:コンパイル時の警告 (致命的でないエラー)
  • E_USER_ERROR:ユーザーが生成したエラーメッセージ
  • E_USER_WARNING:ユーザーが生成した警告メッセージ
  • E_USER_NOTICE:ユーザーが生成した通知メッセージ
  • E_DEPRECATED:PHPの将来のバージョンで機能しないコードを警告
  • E_USER_DEPRECATED:ユーザーが生成した非推奨の警告

wp-config.php

wp-config.phpを設定してエラーログを反映する方法もあります。

この方法はデバッグモードと呼ばれており、WordPressの制御範囲で起こったエラーを記録します。

デバッグモードのメリットは、非推奨の関数もエラーとして出力してくれるところで、これはphp.iniではエラーとして出力してくれないため、WordPress特有の機能となります。

エラーをファイルだけに出力したい場合は、wp-config.phpに以下のコードを追記しましょう。

  • define("WP_DEBUG", true ); //WordPressのエラー出力ON/OFF
  • define("WP_DEBUG_LOG", "wp-content/debug.log" ); //WordPressのエラー出力先
  • ini_set("display_errors", 0); //PHPの画面エラー出力ON/OFF
  • ini_set("error_log", "wp-content/debug.log");//PHPのエラー出力先
  • ini_set("log_errors", 1); //PHPのログ出力ON/OFF
  • ini_set('error_reporting', E_ALL); //最大限出す

画面とファイルの両方にエラーログを出力したい場合は以下です。

  • define("WP_DEBUG", true ); //WordPressのエラー出力ON/OFF
  • define("WP_DEBUG_LOG", "wp-content/debug.log" ); //WordPressのエラー出力先
  • ini_set("display_errors", 1); //PHPの画面エラー出力ON/OFF
  • ini_set("error_log", "wp-content/debug.log");//PHPのエラー出力先
  • ini_set("log_errors", 1); //PHPのログ出力ON/OFF
  • ini_set('error_reporting', E_ALL); //最大限出す

画面にだけエラーログを出力したい場合は、以下のようにしましょう。

  • define("WP_DEBUG", true ); //WordPressのエラー出力ON/OFF
  • define("WP_DEBUG_LOG", false );//WordPressのエラー出力先
  • ini_set("display_errors", 1); //PHPの画面エラー出力ON/OFF
  • ini_set("error_log", 0); //PHPのエラー出力先
  • ini_set("log_errors", 0); //PHPのログ出力ON/OFF
  • ini_set('error_reporting', E_ALL); //最大限出す

PHPファイルに直書き

以下のように対象のファイル先頭に記述することで、ファイル内のエラーを出力できます。

ini_set('display_errors', 1);
error_reporting(E_ALL);
//エラーログの作成場所
ini_set('error_log', $_SERVER['DOCUMENT_ROOT'].'/log.txt');

ini_set()関数はphp.iniの値をプログラム実行時に変更する関数です。

エラーログの出力以外にも、マックスメモリサイズやマックスアップロードサイズの変更が行えます。

この方法は特定のファイルでエラーを検出したい場合に便利かもしれません。

本番でエラー非表示になっており、なおかつ特定のファイルで動作が上手くいかないときなどに使えるでしょう。

WordPressでよく発生するエラーログ

WordPressでよく発生するエラーについて解説します。

Notice: Undefined index

「Notice: Undefined index」エラーは、未定義の配列を使用したときに発生するエラーを指します。

たとえば、以下のような構文では「Notice: Undefined index」エラーが出ます。

echo $_POST["wp"];

解決するには以下のように、配列に値がセットされているかどうか確認するようにしましょう。

if(isset($_POST["wp"]) && !empty($_POST["wp"])){
echo $_POST["wp"];
}

エラーが発生した際、エラーを起こしている行数までPHPは教えてくれますので、その行数のコードをしっかりと確認しましょう。

Parse error: syntax error

「Parse error: syntax error」エラーは代表的なエラーで、PHPで開発していれば見ない日はないほどで、内容は「予期しない構文エラー」という意味です。

基本的にはセミコロンのつけ忘れや、ダブルクォーテーションや波括弧の閉じ忘れなどがほとんどです。

コピー&ペーストする際に「<?php」を入力し忘れて「Parse error: syntax error」エラーになることも珍しくありません。

「Parse error: syntax error」エラーでは行数が表示されますので、まずはその行数に構文ミスがないかチェックしましょう。

Notice: Undefined variable

「Notice: Undefined variable」エラーは、未定義の変数を使用した場合に発生しますが、変数を初期化するとエラーが発生しません。

もしくは、以下のコードのように変数に値があるかどうか確認しましょう。

if(isset($wp)) {
}

「Notice: Undefined variable」エラーはプログラムが止まるほどのエラーではないため、php.iniでは以下のように設定しておいてもよいでしょう。

error_reporting = E_ALL & ~E_NOTICE

Warning: Invalid argument supplied for foreach

「Warning: Invalid argument supplied for foreach」エラーは、foreach文に渡された引数が間違っているときに発生するエラーです。

foreach文は「foreach(配列変数 as 要素を1つ入れる変数)」となっています。

この配列変数がnullだった場合や、配列変数でなかった場合に「Warning: Invalid argument supplied for foreach」エラーが発生します。

WordPressのエラーログ関連のプラグイン

WordPressのエラーログに関連するプラグインを紹介します。

Error Log Viewer

Error Log Viewerは、WordPressの管理画面上からエラーログファイルを検索・閲覧するためのシンプルなユーティリティです。

最新のアクティビティを表示したり、日付でログを選択したり、ログファイル全体を表示したりできます。

WordPressでPHPやテンプレートを編集するなら、エラーログ管理に入れておきたいプラグインのひとつです。

Error Log Monitor

Error Log MonitorはPHPのエラーログを管理画面に表示するため、ダッシュボードウィジェットを追加します。

また、新しくエラーログが発生した場合、メールで通知を受け取ることも可能で、エラーログの場所を自動で検出したり、デバッグモードを有効にしたりできます。

有効インストール数2万を超えており、更新も頻繁に行われている信頼性のあるエラーログプラグインです。

WP Log Viewer

WP Log Viewerは、ウェブサイトのデバッグをストレスなく行えるプラグインです。

クリックでデバッグモードを切り替えたり、エラーフィルタリングしたりと直感的な操作でエラーログを閲覧できます。

WP Log ViewerはWordPressの公式リポジトリでは配布されていないため、WP Log Viewerからダウンロードしてインストールする必要があります。

ZIP形式のプラグインをインストールする場合、管理画面から「プラグイン」→「新規追加」→「プラグインのアップロード」を利用しましょう。

まとめ

今回は、WordPressのエラーログについて解説しました。

WordPressのカスタマイズや開発にはエラーログの取得が必要不可欠です。

WordPressのエラーログには、WordPress本体のデバッグモードと、PHPの機能であるphp.iniで設定するエラーログの2種類があります。

しかしWordPressの開発で使用するなら、非推奨の関数もエラーとして出力してくれる、WordPress本体のデバッグモードがおすすめです。

デバッグモードとphp.iniには、それぞれ特徴やポイントがあるので、それぞれの違いを把握して、適切にエラーログを出力させましょう。

誰でも10分!WordPressブログの始め方
ブログを始めるには、ライブドアブログやはてなブログといった無料ブログを使う方法、あるいはWordPressなどを使用する方法があります。

まだWordPressを持っていない人でも、簡単に準備できる方法を以下の記事で解説してます。
初心者でもわずか10分で始められるので、参考にしてみてください。

合わせて読みたい

【完全ガイド】誰でも10分!WordPressブログの始め方

独自ドメインを取得するなら「お名前.com」
「お名前.com」は、国内No.1のドメイン登録サービス。独自ドメインと合わせて、WordPressの自動インストールに対応したレンタルサーバーも利用できます。
WordPressや独自ドメインを一度も使ったことのない人でも、スムーズに始められるはず。

独自ドメインを取得しようと考えている方は、以下のリンクから、ぜひご利用ください。

お名前.comで
独自ドメインを取得

Facebookシェア Twitterシェア LINEシェア はてなブックマークシェア

このサイトの管理人
泉 賢

GMOインターネット株式会社お名前.com事業部所属。
お名前.comのドメインに関するマーケティング業務を担当し、現在はオウンドメディアサイト運営を中心に活動中。

WEB学園をご覧になった方限定

ブログ作成なら独自ドメインがオススメ
[.com]0円クーポン適用中

クーポンをもらう

 

\ 今なら無料 /ブログを始めるなら
「お名前.com」

「お名前.com」は、国内No.1のドメイン登録サービス。独自ドメインとあわせてWordPress対応のレンタルサーバーも利用できるので、初めての方でもスムーズに始められます。

\ 3分でできる /内容を確認してみる