スポンサーリンク/Sponsored Link

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

Wordpressの「重大なエラー」原因はiPhoneのメモアプリだった!?
ホームページ作成
スポンサーリンク/Sponsored Link

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

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

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

というお話です。

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

スポンサーリンク/Sponsored Link

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に戻してみましたが、これもだめでした。

テーマファイルのコードそのものを点検しましたが、誤った編集や、改ざんなどはありませんでした。

そもそも、まったく同じ構成で作成しているテスト環境では、同じエラーは出ていませんでした。

かすかな手掛かりの感触・新規投稿は問題なく表示

かすかな手掛かりを得たのは、試しに新規投稿をしてみた時です。

新しく投稿を作成して公開してみたところ、この新規投稿は正しく表示されました。

そこで、こんどは、既存の投稿をひとつずつ、一旦ゴミ箱に入れて、また戻してみることにしました。

そうすると、そこに原因解明のカギがありました。

スポンサーリンク/Sponsored Link

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のシステムと干渉してエラーを生む、ということだと推測されます。

スポンサーリンク/Sponsored Link

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

コメント

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