2019年版 Crayon Syntax Highlighterのエラー

致命的バグ発生

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



私は賢威を使っています。