スポンサーリンク

WordPressの「重大なエラー」、原因はiPhoneのメモアプリだった!?

ホームページ作成

当店で最近経験した、珍しいWordpressの不具合事案について、ご紹介いたします。

原因特定に時間を要しましたが、結論としましては

  • WordPress本体、データベース、プラグイン、サーバ、いずれも異常はなかった
  • 原因は、なんとiPhoneのメモアプリだった

というお話です。

ははーん。と、だいたい話が見えてしまった方もいらっしゃると思いますが、状況をご説明いたします。

スポンサーリンク

WordPressサイトの閲覧中に「重大なエラー」

ことの発端は、あるご相談です。

「うちのサイトを見ている時、重大なエラー、と表示されて、ブログが最新の一件しか表示されなくなった」

「その際に、エラーのようなものが一緒に表示された」

このサイトで重大なエラーが発生しました。

Wordpressのトラブルシューティングについてはこちらをご覧ください。
最新の一件しか投稿が表示されなくなったブログ(再現映像)
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('<p class="p1"><...') #1/home/test/test.com/public_html/wp-includes/plugin.php(191): WP_Hook- >apply_filters('<p class="p1"><...', Array) #2 home/test/test.com/public_html/wp-includes/formatting.php(3877):apply_filters('the_content', '<p class="p1">
最新の一件しか投稿が表示されなくなったブログ
(これは再現映像です。実際にトラブルが起きた画面ではありません。)

出ているエラーメッセージはこのようなものでした。
※ディレクトリ名、サイト名は「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を使用した環境です。
※この写真は再現映像です。実際のサイトではありません。

問題の最新記事の編集画面。Classic Editorのビジュアル編集
※再現映像です。実際の画面ではありません

これを、「テキスト」モードに変更すると、こうなっていました。

※再現映像です。実際の画面ではありません

えっ、これは何!?

普通の写真付き記事のはずだったのに、なんだかバイナリコードみたいになっています。

これは、下記の記事で、画像をCSSに埋め込む方法として用いられている「base64エンコード」のようです。

小さな画像をCSSソースに直接(Base64で)埋め込む方法 [ホームページ作成] All About
Base64というエンコード方法を使って、画像そのものをCSSソース中に埋め込む方法を解説。ウェブ上に小さな画像を多数掲載する際、画像ファイル1つ1つを読み込むよう記述していると、サーバへのリクエスト回数も多くなるため余計な時間がかかります...

iPhoneの「メモ」アプリで作って、コピペした記事だった

普通のWordpressの編集作業で、こんなことは決して起こりません。

不思議です。

どうしてこんなことになったのか、記事を書いた人に確認してみたところ

iPhoneのメモアプリで書いて、それを投稿画面にコピペした

ということが分かりました。

なんと、iPhoneのメモアプリは、画像を含むメモでも、base64エンコードして、画像ごとコピーしてくれる、ということのようです。

(iPhoneのメモアプリ、逆にすごいですね…)

※画面はiPadのメモアプリでスクショしています

テスト環境でも、トラブルはなかなか再現しません

実は、この話があり、実際に手元のiPadのメモアプリで作成してみたのが、冒頭からご紹介しているテスト環境の再現画像です。

ところが、テスト環境でいくらメモアプリからコピペしても、トラブルは再現しませんでした。

テスト環境で、iPadのメモアプリを使って記事をはりつけたところ。トラブルは発生していない
先頭の「冬の記事」だけ、iPadのメモアプリからコピペで作成しています。base64エンコードされていますが、後続の記事も正しく表示され、エラーは出ていません。

特定の1枚のbase64エンコード画像のみが、トラブルの真の原因

実際にトラブルがあった環境で試したところ、複数張り付けられたbase64エンコード画像のうち、特定の1枚のみがトラブルの原因であったことが判明しました。

これ以上詳細は確認できていないのですが、つまり、エンコードされた文字列の中の、特定の配列が、Wordpressのシステムと干渉してエラーを生む、ということだと推測されます。

スポンサーリンク

WordPressの投稿作成に、メモアプリを使う方はご注意

というわけで、ぶじにトラブルは解決にいたりました。

WordPressの「重大なエラー」の原因は、さまざまなものがあります。

まず最初に疑うのは、やはりプラグインの更新、というのはこれからも変わらないと思うのですが

投稿そのものが原因だった、というのは、大変驚きの結果でしたので、記事にさせていただきました。

現在、もしかしたら、iPhoneのメモアプリで投稿を作成している方も、いらっしゃるかもしれません。確かに、Web上の投稿画面より動作は軽いですし、画像だって入れられます。普段慣れている方はこちらの方が書きやすいことがあります。

おそらく、多くの場合は問題なく動作していると思われますが、それは単にラッキーだ、と考えた方がよさそうです。

今後、不具合を発生させる条件を満たす画像を、もしかしたら投稿してしまうかもしれません。

ですので、iPhoneのメモアプリは、使わないで済むのなら、使わない方がよいと思います。

もし使うとすれば、画像の部分は「画像」とか「冬山の写真」とか、分かるような文字を入れておいて、投稿画面に貼り付けた後に、普通の方法で画像を挿入するのがよいでしょう。

「最新投稿をゴミ箱に入れてみる」は試してみる価値あり

WordPressの管理を業務としてやっている場合、クライアントがiPhoneのメモアプリを使っているかなんて、分からないこともあると思います。

どうしても、どうしても、どうしても…原因が分からない時、「最後の投稿を試しにゴミ箱に入れてみる」も、試してみる価値がある、と思います。

パソコン教室・キュリオステーション志木店からのお知らせ
レッスンはオンラインで受講できます

パソコン教室・キュリオステーション志木店では、オンラインでの在宅レッスンを実施しております。
教室の全コースがオンラインで受講可能。実際にインストラクターがご対応いたします。
1時間の無料体験レッスンはいつでも予約できます。詳しくは公式ページをご覧ください。

キュリオステーション志木店運営をフォローする
スポンサーリンク

コメント

タイトルとURLをコピーしました