[PHP] PHP7.2以降MoguraPlusXのeach()がエラーログにたびたび出てくる場合の対処法

自分は以前からずっと、アクセス集計・解析用にMoguraPlusXを導入しています。

導入が楽なことと、集計画面が自分にとってとても見やすくて使いやすいから、というのが理由で、会社のサイト管理でも、GoogleAnalyticsとMoguraPlusXを併用しています。

そんな使いやすいMoguraPlusXですが、PHP7.2の環境に導入したところ、一見正常に動いているように見えますが、エラーログが出力されていることに気が付きました。

スポンサーリンク

今回発生するエラーの内容

PHP7.2の環境で出力されるエラーログは、下記のようなものになります。

PHP Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/user/www/accesslog/mpx/writelog.php on line 734

each()がPHP7.2より非推奨となったため「廃止予定ですよ」と教えてくれています。

今はまだ放っておいても問題ありませんが、エラーログが肥大化する原因でもありますし、いずれ廃止される関数を使い続けるのもよくないので、ソースを書き換えてしまいましょう。

writelog.phpの修正

エラーログにも表示されていますが、734行目にあるeach()が今回の修正対象です。

while (list ($k, $v) = each ($w3a_buf)) {

          ↓

foreach ($w3a_buf as $k => $v) {

上記のように、list()とeach()を組み合わせてwhile()で回している部分を、そっくりforeach()に置き換えてしまえばOK。

動作確認を行い、正常にアクセスログが取得できていれば作業完了です。

さいごに

ひとつのプログラムを使い続けるには、こうしたメンテナンスが必要不可欠です。それはプログラムに限らず、PCも、機械も、われわれ人間にも言えることですね。

こまめに手をかけて、末永く愛用させていただきましょう。

MoguraPlusXの初期セットアップでエラーになってしまう方は、こちらの記事をどうぞ。

自分は以前からずっと、アクセス集計・解析用にMoguraPlusXを導入しています。 導入が楽なことと、集計画面が自分にとってとても見やすくて使いやすいから、...

MoguraPlusXがMySQL5.7でエラーになってしまう方は、こちらの記事をどうぞ。

自分は以前からずっと、アクセス集計・解析用にMoguraPlusXを導入しています。 導入が楽なことと、集計画面が自分にとってとても見やすくて使いやすいから、...
初稿:2020年1月18日