当店で最近経験した、珍しいWordpressの不具合事案について、ご紹介いたします。
原因特定に時間を要しましたが、結論としましては
- WordPress本体、データベース、プラグイン、サーバ、いずれも異常はなかった
- 原因は、なんとiPhoneのメモアプリだった
というお話です。
ははーん。と、だいたい話が見えてしまった方もいらっしゃると思いますが、状況をご説明いたします。
WordPressサイトの閲覧中に「重大なエラー」
ことの発端は、あるご相談です。
「うちのサイトを見ている時、重大なエラー、と表示されて、ブログが最新の一件しか表示されなくなった」
「その際に、エラーのようなものが一緒に表示された」
出ているエラーメッセージはこのようなものでした。
※ディレクトリ名、サイト名は「test」に置き換えています。
Fatal error
: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable| array, bool given in /home/test/test.com/public_html/wp-includes/formatting.php:3415 Stack trace:#0 /home/test/test.com/public_html/wp-includes/class-wp-hook.php(307): convert_smilies(‘<…’) #1/home/test/test.com/public_html/wp-includes/plugin.php(191): WP_Hook- >apply_filters(‘
<…’, Array) #2 home/test/test.com/public_html/wp-includes/formatting.php(3877):apply_filters(‘the_content’, ‘
実際のエラー画面スクリーンショットから文字起こししたもの
プラグイン更新など確認するが、何も原因は出てこず
タイミングからみて、まずプラグインの自動更新を疑いました。
しかし、検証を重ねた結果、すべてのプラグインを無効にしても、エラーは消えませんでした。
WordPress本体の再インストールをしても、だめでした。
つい最近、PHP8に移行したばかりでしたので、PHP7に戻してみましたが、これもだめでした。
テーマファイルのコードそのものを点検しましたが、誤った編集や、改ざんなどはありませんでした。
そもそも、まったく同じ構成で作成しているテスト環境では、同じエラーは出ていませんでした。
かすかな手掛かりの感触・新規投稿は問題なく表示
かすかな手掛かりを得たのは、試しに新規投稿をしてみた時です。
新しく投稿を作成して公開してみたところ、この新規投稿は正しく表示されました。
そこで、こんどは、既存の投稿をひとつずつ、一旦ゴミ箱に入れて、また戻してみることにしました。
そうすると、そこに原因解明のカギがありました。
iPhoneの「メモ」から、Wordpressにコピペした記事が原因だった
特定の記事をゴミ箱に入れると、すべてが元通りに復旧
最新投稿を、いったんゴミ箱に入れてみました。
すると、ブログのすべての機能が、完全に元通りに復旧したのです。
まさかこの記事が原因なの!? と思い、記事の中身を見てみたところ…
記事をHTMLで表示すると、異変が…
問題の最新記事、編集画面はこんな感じでした。
※Classic Editorを使用した環境です。
※この写真は再現映像です。実際のサイトではありません。
これを、「テキスト」モードに変更すると、こうなっていました。
えっ、これは何!?
普通の写真付き記事のはずだったのに、なんだかバイナリコードみたいになっています。
これは、下記の記事で、画像をCSSに埋め込む方法として用いられている「base64エンコード」のようです。
iPhoneの「メモ」アプリで作って、コピペした記事だった
普通のWordpressの編集作業で、こんなことは決して起こりません。
不思議です。
どうしてこんなことになったのか、記事を書いた人に確認してみたところ
iPhoneのメモアプリで書いて、それを投稿画面にコピペした
ということが分かりました。
なんと、iPhoneのメモアプリは、画像を含むメモでも、base64エンコードして、画像ごとコピーしてくれる、ということのようです。
(iPhoneのメモアプリ、逆にすごいですね…)
テスト環境でも、トラブルはなかなか再現しません
実は、この話があり、実際に手元のiPadのメモアプリで作成してみたのが、冒頭からご紹介しているテスト環境の再現画像です。
ところが、テスト環境でいくらメモアプリからコピペしても、トラブルは再現しませんでした。
特定の1枚のbase64エンコード画像のみが、トラブルの真の原因
実際にトラブルがあった環境で試したところ、複数張り付けられたbase64エンコード画像のうち、特定の1枚のみがトラブルの原因であったことが判明しました。
これ以上詳細は確認できていないのですが、つまり、エンコードされた文字列の中の、特定の配列が、Wordpressのシステムと干渉してエラーを生む、ということだと推測されます。
WordPressの投稿作成に、メモアプリを使う方はご注意
というわけで、ぶじにトラブルは解決にいたりました。
WordPressの「重大なエラー」の原因は、さまざまなものがあります。
まず最初に疑うのは、やはりプラグインの更新、というのはこれからも変わらないと思うのですが
投稿そのものが原因だった、というのは、大変驚きの結果でしたので、記事にさせていただきました。
現在、もしかしたら、iPhoneのメモアプリで投稿を作成している方も、いらっしゃるかもしれません。確かに、Web上の投稿画面より動作は軽いですし、画像だって入れられます。普段慣れている方はこちらの方が書きやすいことがあります。
おそらく、多くの場合は問題なく動作していると思われますが、それは単にラッキーだ、と考えた方がよさそうです。
今後、不具合を発生させる条件を満たす画像を、もしかしたら投稿してしまうかもしれません。
ですので、iPhoneのメモアプリは、使わないで済むのなら、使わない方がよいと思います。
もし使うとすれば、画像の部分は「画像」とか「冬山の写真」とか、分かるような文字を入れておいて、投稿画面に貼り付けた後に、普通の方法で画像を挿入するのがよいでしょう。
「最新投稿をゴミ箱に入れてみる」は試してみる価値あり
WordPressの管理を業務としてやっている場合、クライアントがiPhoneのメモアプリを使っているかなんて、分からないこともあると思います。
どうしても、どうしても、どうしても…原因が分からない時、「最後の投稿を試しにゴミ箱に入れてみる」も、試してみる価値がある、と思います。
コメント