WordPress:PHP7.3へバージョンアップ後にCrayon Syntax HighlighterプラグインでWarning: preg_replace(): Compilation failed エラーが表示されるときの対処方法

PHP7.3にバージョンアップすると以下のエラー(警告)を大量に表示します。
「Crayon Syntax Highlighter」プラグインは最新のバージョン 2.8.4でも最終更新日は 3年前。


Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in (ディレクトリ名)/wordpress/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340


対処方法は以下の3つです。

(正しい方法) 「Crayon Syntax Highligher」プラグインの使用を停止する
(一時的対応) 「Crayon Syntax Highligher」プラグインを直接修正する
(危険な一時的対応) PHP5へダウングレードする

対処法1:「Crayon Syntax Highligher」プラグインの使用を停止する。
そもそも 3年もメンテナンスがないプラグインは使用をやめるべきです。
代替としては「SyntaxHighlighter Evolved」が最有力です。

 

SyntaxHighlighter Evolved

 

作者の Alex Mills (@viper007bond) は2019年2月17日に白血病で亡くなっています。

幸い、雇用先だった Automattic 社が彼のプラグインを引き継ぐことを表明しています。

WordPress.org のサイトでも利用されている定番プラグインですのでしばらくはメンテナンスも大丈夫でしょう。

 

対処法2: (一時しのぎ) 「Crayon Syntax Highlighter」プラグインを修正する
この方法は「Crayon Syntax Highlighter」をアンインストールするまでの時間稼ぎでしかありません。またプログラムファイルを変更するため、手順がよくわからない人は実行しないでください。

1. FTP 等でサーバーから次のファイルをダウンロードする。

(WordPress をインストールしたディレクトリ)/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php

2. エディターでファイルを開き 340行目の preg_replace() 関数の第1引数の「-」の前にバックスラッシュを挿入する。

(修正前) return preg_replace('/[^\w-+#]/msi', '', $id);
(修正後) return preg_replace('/[^\w\-+#]/msi', '', $id);

3. 変更したファイルを元の位置に戻す。

注意: 一応正しく動作しているようですが、他にエラーが出るやもしれません。

 

対処法3: (危険な一時しのぎ) PHP 5 にダウングレードする
この方法は「Crayon Syntax Highligher」をアンインストールするまでの時間稼ぎでしかありません。
さらに、PHP5.6のサポートは切れていますし、セキュリティ的なリスクもあります。
こうした事実を承知の上で実行し、速やかに「Crayon Syntax Highligher」のアンインストールを検討する方が良いです。

 

参考サイト:
https://unofficialtokyo.com/2019/06/fix-crayon-syntax-highlighter-error-on-php-7-3/

 

category cloud