
致命的バグ発生
2019年3月現在、「Crayon Syntax Highlighter」に深刻なエラーが発生しています。
その原因と解決方法をお知らせします。
Crayon Syntax Highlighterとは
「Crayon Syntax Highlighter」は、ホームページ上でソースコードを綺麗に表示できる「WordPressプラグイン」です。
他にもいくつか同じようなプラグインはありますが、これが一番人気です。きっとご覧になった方も多いでしょう。
こんな具合に。
サイトを見る側としても、コードをコピペするのも簡単で、その操作方法にはすっかり慣れ親しんでいます。
もう手放せないという方も多いのではないでしょうか。
ところが・・
ところが昨日、いつものように「WORDPRESS 5.0」に「Crayon Syntax Highlighter」をインストールしようとしたところ、このようなエラーが発生してしまいました。
プラグインの有効化中に20526文字の予期しない出力が生成されました。 “headers already sent” メッセージや RSS フィードの問題、その他の不具合に気づいた場合、このプラグインの停止または削除を試してください。
ホームページも表示できない
今まで表示されていたホームページも、エラーメッセージで埋め尽くされてしまいました。
あわてて「Crayon Syntax Highlighter」プラグインを無効にしました。
PHPが悪さをしている?
どうやら「WORDPRESS」にインストールされた「/wp-content/plugins/crayon-syntax-highlighter」フォルダにある「crayon_langs.class.php」が悪さをしているようです。
上の画面でメッセージに表示されていた、340行目のこのあたりです。
正規表現が問題なのか
こnプラグインは、clearn_id()という関数の中でpreg_replace()関数を使っています。
preg_replace()は「正規表現」を使って文字列を置換するPHPの関数です。
はてさて「¥」(画面上では「\」と表示される)が問題なのか、それとも・・
原因がわかった!
またいつものように散々苦労してしまいましたが、やっと原因がわかりました。
「Crayon Syntax Highligher」プラグインは、インストールの時にお気付きかもしれませんが、実は3年以上前からバージョンアップされていません。
作者は、2013年には既に「製作を辞めた」と言っているようです。
潜在的バグか
最近、PHPのバージョンが7.3.1になりました。
それによって、この致命的とも言える「潜在的バグ」が浮上したようです。
「Crayon Syntax Highlighter」と「PHP 7.3」を使用している限り、サイトがクラッシュします。
(かと言って、今さら他のソースコードを表示できるプラグインに変更するのも・・)
解決方法
でも解決方法は簡単です。
先ほどの
「/wp-content/plugins/crayon-syntax-highlighter」にある「crayon_langs.class.php」 を次のように変更してみてください。
変更前(337行目~)
変更後(337行目~)
お使いの環境によって、表示が変わっているかも知れませんが、「¥」(またはバックスラッシュ)を一文字追加するだけです。
[^\w-+#] → [^\w\-+#]
これで、エラーも解消され、またいつものようにソースコードの表示ができるようになりました。
一件落着。
最新版を入手することも可能
「Crayon Syntax Highlighter」プラグインは、GitHub(海外)のサイトで、有志の方が現在も更新されています。
今、WORDPRESSプラグインとして入手できる最新版はVer.2.8.4。
GitHubの最新版では、Ver.2.8.6となっています。
もしダウンロードされるなら、こちらからどうぞ。
https://github.com/Crunchify/crayon-syntax-highlighter/releases/tag/2.8.6
私は賢威を使っています。
ありがとうございます。
助かりました!