ワードプレス運用中のサイトのエラーログを出力させてそれをダッシュボードで見る方法をご紹介します。
ログ出力方法は結構いろいろなサイトに書かれているのですがそれをダッシュボードに表示させる方法がなかったので作ってみました。WP_DEBUGを使ってデバッグモードをtrueにすれば表示させられるのですが、運用中のサイトにログが出力されてもいけないのでログファイルに保存するようにします。
まずはログファイルに出力させる方法は簡単です。
3ステップで完了できます。
まずwp-config.phpに下記設定します。 WP_DEBUGがfalseになっているのをtrueに変更して、WP_DEBUG_LOGをtrueにします、これでログがとれます。それからWP_DEBUG_DISPLAYをfalseにします、これで画面出力を非表示にします。 一応php側の設定でもdisplay_errorsも0にしてエラー出力を非表示にします。
wp-config.php
<?php;
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);
この設定だけでhttp://example.com/wp-content/debug.logなどのように、debug.logが出来ます。
ただこのままだとあからさまに見られてしまうので.htaccessに下記を追記します。
# BEGIN WordPressから# END WordPressまではワードプレスインストール時に出来ていると思いますのでその下のFiles debug.logから記述します。 これでアクセスできないようにして見られなくします。
.htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
<Files debug.log>
Order allow,deny
Deny from all
</Files>
これで外部アクセスから表示されません。
最後にfunctions.phpに下記を記述します。これで完了です。
functions.php
<?php
// エラーログ取得
function getWpErrorLog() {
// ファイルパス
$logfile = WP_CONTENT_DIR.'/debug.log';
// 最大ログ件数
$maxlist = 10;
// ログファイルかあるかどうか
if ( file_exists( $logfile ) ) {
$log = file($logfile);
$reversed = array_reverse($log);
echo '<ul class="wperrors">';
$i = 0;
foreach ($reversed as $reverse) {
if ($i < $maxlist) {
echo '<li>'.$reverse.'</li>';
}
$i++;
}
echo '</ul>';
} else {
echo '<p>ログを取得できません。</p>';
}
}
// ダッシュボード表示
function WPErrorLogDashbordDisplay() {
if (current_user_can('administrator')) {
wp_add_dashboard_widget( 'wp-geterrors', 'デバッグエラーログ', 'getWpErrorLog' );
}
}
add_action( 'wp_dashboard_setup', 'WPErrorLogDashbordDisplay' );
管理者権限のみと10件表示になっています。因みに時間がUTC時刻なので9時間ぐらいの差があります。日本時間にしたい場合は同じくfunctions.phpの先頭に下記を記述すると良いです。
<?php
date_default_timezone_set( 'Asia/Tokyo' );
参考になれば幸いです。
∞Tadashi Suyama∞
あまりcgiは使いたくないのですが使わざるを得ない時があります。仕方なく設置するのですがエラーが出ちゃうんです。なんか知らないけど。 ありがちなのがパーミッションとかパスが問題になるんのですけど...
19 Feb 2022
今回はワードプレス専用のアドレス変更方法をご紹介します。ワードプレスのアドレスはwordpress@~という形で送られてきますが変更可能です。 functions.phpに記載するのですがプラグ...
12 Feb 2022
Sassの遷移は多すぎる今日この頃 Ruby Sass→LibSass→DartSass(いまここ) Ruby SassはSassの最初の実装でしたが、2019年3月26日にサポートが終了しま...
22 Jan 2022
明けましておめでとうございます。 本年も何卒よろしくお願いいたします。 年末年始は雪でしたね、そこまで積もっていませんが。 {% include adsensearticle.html...
10 Jan 2022
最近はjQueryよりvueで書いた方が楽ではないかと思い学習中です。 そもそもVuejsはドキュメントが日本語対応なので試しやすいし情報も豊富なので学習しやすいです。 3大フレームワークと呼...
02 May 2021
ウェブエンジニアの須山のブログです。
WEBに関することや個人的に関心のあることについて書きます。主に技術系ブログです。