HOME → 3 WordPress → 04 運用とトラブル → 

WordPress タイトルだけ表示されて記事の内容が表示されない

WordPress Twenty Seventeen
記事の内容が表示されないページが発生
Crayon Syntax Highlighter のバグ
 
Webサーバーをバージョンアップし、WordPress の移行結果を検証していると、「記事のタイトルだけが表示されて、記事の内容が全く表示されない」ページが見つかる。全てのページではなく、いくつかの特定のページのみであることに気付く。
 
記事の内容が表示されないページがいくつかある
 
以下、この原因の解明手順と解決策にたどり着いた記録。
 

 

スポンサー リンク

 

 
 
 
 
 
1. Webサーバーのバージョンレベル
 
現行サーバーのバージョン。
Raspbian : Stretch
Nginx : 1.6.2
PHP : 5.6.38
Mysql : 14.14
 
新サーバーのバージョン。
Raspbian : Stretch Release date:2019-04-08
Nginx : Stable version 1.16.0
PHP : 7.3.6 - 2019.05.31
MariaDB : 10.1.38
 
PHPを、PHP5.6からPHP7.3に変更したのが大きな特異点
 
 
 
2. 障害の発生状況
 
一部の画面のみ、タイトルだけが表示されて、記事内容が表示されない。
記事の内容が表示されないページがいくつかある
 
「検証」で、ソースをチェックしてみるも解らず。
「検証」で、ソースをチェックしてみるも解らず
 
内容が表示されないページの一覧を作り、特徴がないか調べるも判らず。(下記はその一部)
内容が表示されないページの一覧
 
 
 
3. プラグインを全て停止し、プラグインが原因かどうか調査
 
「インストール済プラグイン」画面を開き、全てのプラグインを一括操作で【停止】にする。
全てのプラグインを一括操作で【停止】する
 
全てのプラグインが【停止】になった。
全てのプラグインを【停止】にした
 
プラグインが【停止】になった状態で、タイトルだけになった画面を確認すると、今度は正常に表示されるようになった。
タイトルだけの画面を確認すると、正常に表示されるようになった
 
表示された記事の内容を確認して気付いたのが、内容が表示されなかったページには『ソースコードを表示』しており、そのソースコードが綺麗に表示されていないという点だった。(プラグインを停止しているからであるが・・・)
ソースコードが綺麗に表示されていない
 
ソースコードの表示には「Crayon Syntax Highlighter」を使用しており、該当のページにだけ問題が発生していると特定する。
 
そこで、「Crayon Syntax Highlighter」のみを停止状態にし、その他のプラグインを有効化する。→ 全てのページの内容が表示される。
 
「Crayon Syntax Highlighter」のみを停止
 
 
 
4. 『Crayon Syntax Highlighter』プラグインが原因と判明
 

【 Crayon Syntax Highlighter のバグ 】という検索キーワードでググると、

2019年3月現在、「Crayon Syntax Highlighter」に深刻なエラーが発生しています。

 
 と、いう記事が出てきた。
 
以下、「2019年版 Crayon Syntax Highlighterのエラー」サイトの内容を転載。
 

「Crayon Syntax Highlighter」は、ホームページ上でソースコードを綺麗に表示できる「WordPressプラグイン」です。これが一番人気です。
---------------------------
「Crayon Syntax Highligher」プラグインは、インストールの時にお気付きかもしれませんが、実は3年以上前からバージョンアップされていません。

作者は、2013年には既に「製作を辞めた」と言っているようです。 
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
最近、PHPのバージョンが 7.3.1 になりました。
それによって、この致命的とも言える「潜在的バグ」が浮上したようです。

 
 
 
5. バグの修正要領
 
上記記事を参考に、以下の通り修正。
 
「crayon_langs.class.php」 の修正。
sudo nano /xx/yy/zz/wp-content/plugins/crayon-syntax-highlighter 
 
行番号と修正内容。
337 // Override
338 function clean_id($id) {
339 $id = CrayonUtil::space_to_hyphen( strtolower(trim($id)) );
340 return preg_replace('/[^\w\-+#]/msi', '', $id);
341 }
 
 
修正箇所の詳細。
「crayon_langs.class.php」 の修正
 
 
 
6. 修正結果
 
修正後、「Crayon Syntax Highligher」プラグインを有効にする。
 
問題が解決され、ソースコードも綺麗に表示されるようになった。
ソースコードが、綺麗に表示されるようになった
 
 
以上。
(2019.07.13)
 

 

スポンサー リンク

 

             

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください