この記事では、「Warning: Invalid argument supplied for foreach() in ~」というエラーが出た時の対処法をWordPress初心者向けに記録しておく。
サイトに「Warning: Invalid argument supplied for foreach() in ~」というエラー発生
2020年5月某日、ブログの記事を更新しようとサイトにアクセスしたところ、アイキャッチ画像と本文の間にこんな表示を発見。
Warningというまがまがしさ溢れるキーワードとともに、3行に渡って何かを警告する英文が記されている。
私はサイトの構築やこういったトラブルに対する知識はその道に暗いが、英文の終盤が「on line 708」で終わっていてその直前にphpという文字があることから、PHPファイルのエラーによってこの警告文が表示されているということはうっすらと推測できた。
つまり、このエラーを修復するためには、PHPファイルの誤った記述を正しく訂正すれば解決できるということになる。
Warning: Invalid argument supplied for foreach() in ~」というエラーの原因
そこで警告文をよく見てみると、「plugins/visualizer」という記述があることから、「Warning: Invalid argument supplied for foreach() in ~」というPHPエラーが発生した原因は、おそらくプラグインのVisualizerを更新した際に何かしらの不具合が起きたことによるものだと思われる。
エラーが出るなら違うプラグインを使おうかとも一瞬考えたが、Visualizerはとってもとっても便利なプラグインで、下のような記事を作成する際にお世話になっているため、エラーを解決する道を選択。
Warning: Invalid argument supplied for foreach() in ~」というエラーの対処法
対処法は大きく分けて2つある。
まずは正攻法のやり方からいこう。
エラーが出ているファイルの修正
PHPファイルの修正はFTPサーバーで行うことができる。
FTPサーバーへアクセス
さっそく、FTPサーバーへアクセスしよう。
ここでは私が使っているロリポップサーバーを例に手順を進めていく。
必要事項を入力し、ユーザー専用ページへアクセスする。
「サーバーの管理」→「ロリポップ!FTP」と進むとロリポップFTPへアクセスできる。
エラーが出ている箇所を探す
目的となるPHPファイルがどこにあるかといえば、先ほどのエラー発生を表す警告文の太字部分を見るとわかる。
英文の意味はこんな具合だ。
サイトが複数ある場合は対象となるサイトのドメインをこの英文で確認し、そのドメインにある「wp-content」から順に下の階層へ進んでいけば、目的地となる「Module.php」というPHPファイルへ行き着くはずだ。
で、そのファイルのどこにエラーがあるのかだが、先ほどの警告文の最後を見ると答えがある。
今回の私の場合は「on line 708」となっているので、つまりは708行目でエラーが出ていますよー。ということになる。
ただし、ロリポップFTPでは行の表示がなく708行も数えるのは大変なので、TeraPadなどのテキストエディタを使えばすぐに708行目に辿り着ける。
テキストエディタを使ったことがない人はこれを機に導入しておきましょう。
ブログ運営をするうえで必須なアイテムです。
TeraPadの導入方法はこちらを参考に(無料ソフトです)。
Module.phpファイルの内容部分にカーソルを合わせ「Ctrl」+「A」で全範囲を選択してコピー、それをテキストエディタに貼り付けすれば準備は完了。
(array)を挿入する
該当する行に
(array)
を挿入し、FTPサーバーのファイルを更新すれば修正完了。
入れる場所は正直私にはピンとこなかったので、適当な場所に入れてみてサイトを確認し、ダメだったら場所をズラして入れてみてサイトを確認、という作業を2~3回繰り返した。
エラーの行がわかっているので、慣れない作業ではあったもののそれほど時間はかからずに修正完了。
これでも万が一同じエラーが出てしまう場合、次の対処を行えば大抵は解決できるはずだ。
WARNINGを出させない
前述の方法で「Warning: Invalid argument supplied for foreach() in ~」というエラーを解決しホッとしたのもつかの間、数ヶ月後に再びこのエラーが現れた。
しかも2個。
ひとつは前述の正攻法で消すことが出来たが、もうひとつの方はどうあがいても消せない。
解決法らしき答えを解説してくれているサイトはいくつかあったのだが、そもそもそれをどう自分のケースに当てはめればいいのかがわからない。
話しのレベルが高すぎて理解ができない。
たぶんこんな人、いっぱい居るはずだ。
そんな途方に暮れかけていた私でも理解できる解決法が、「WARNINGという警告が表示されないようにする」という斬新なものだ。
もちろん「え、そんな荒っぽいことしていいの?」と反射的に思ったが、かれこれ3時間ほどこのエラーと格闘していた私には余力が残っていなかった…。
ということで、WARNINGという警告を消すもうひとつの方法はこうだ。
FTPサーバーへアクセス
正攻法のときと同様、まずはFTPサーバーへアクセスする。
対象となるサイトのフォルダを開くと「wp-config.php」というファイルがあるので、探して開く。
wp-config.phpに構文を追記
wp-config.phpファイルの1番下に以下の4行のおまじないを追加する。
ini_set(‘error_reporting’, 0 );
define(‘WP_DEBUG’, false);
define(‘WP_DEBUG_DISPLAY’, false);
追加できたらファイルを保存すれば完了だ。
「wp-config.phpというファイルに4行の構文を追加するだけ」というシンプルなやり方だが、私の場合はこれで見事に解決できた。
まぁ、正攻法的にきちんと手順を踏んで直す方が理想的な気もするけど、今回のエラーはサイトが表示されないとかいったような重大なトラブルではないし、正攻法で長時間頑張ってみたものの解決できそうにもなかったという理由から今回はこの方法を選び、その後現在までは付随するトラブルは起きていない。
ただし念のため付け加えておくが、くれぐれも行動は自己責任で。
まとめ
「Warning: Invalid argument supplied for foreach() in ~」というエラーの対処法は2つ。
- エラーが出ているファイルを特定し、修正する
- エラーそのものを表示させないようにする
この他にも、WordPress初心者がハマりがちなトラブルの対処法を伝授しているので、ご一読あれ。
Copyright secured by Digiprove © 2020