PHP 7.3 にバージョンアップ後 Crayon Syntax Highlighter プラグインで Warning: preg_replace(): Compilation failed エラーが表示される場合の対処法

投稿日: カテゴリー

さくらインターネットでは、以前から通知されていたように 2019年6月26日から7月3日にかけて PHP 7.2 環境を PHP 7.3 環境に自動更新するようです。この結果、これまではエラーや警告を表示していなかった WordPress プラグインやテーマが突然エラーを表示する可能性があります。

たとえばタイトルの「Crayon Syntax Highlighter」プラグインは最新のバージョン 2.8.4でも最終更新日は 3年前。PHP 7.2 までは正常に動いていたものが、PHP 7.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

このサイトを PHP 7.3 にバージョンアップした際に表示されたエラー

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

  1. (正しい方法) 「Crayon Syntax Highligher」プラグインの使用をやめる
  2. (一時しのぎ) 「Crayon Syntax Highligher」プラグインを修正する
  3. (危険な一時しのぎ) PHP 5 にダウングレードする

順番に紹介していきます。

対処法1: (正しい方法) 「Crayon Syntax Highligher」プラグインの使用をやめる

そもそも 3年もメンテナンスがないプラグインは使用をやめるべきでした。代替としては「SyntaxHighlighter Evolved」が最有力でしょう。

作者の Alex Mills (@viper007bond) は2019年2月17日に白血病で亡くなっています。幸い、雇用先だった Automattic 社が彼のプラグインを引き継ぐことを表明しています。WordPress.org のサイトでも利用されている定番プラグインですのでしばらくはメンテナンスも大丈夫でしょう。

「Crayon Syntax Highligher」から「SyntaxHighlighter Evolved」への移行はそれなりに手間がかかりますが、昔の記事を見直すよい機会になりそうです。

対処法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引数の「-」の前にバックスラッシュを挿入する。

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

注意: 一応正しく動作しているようですが、他にエラーが出るやもしれません。宮内さん、確認してくれてありがとうございます。

対処法3: (危険な一時しのぎ) PHP 5 にダウングレードする

この方法は「Crayon Syntax Highligher」をアンインストールするまでの時間稼ぎでしかありません。しかも PHP 5.6 のサポートは切れていますし、セキュリティ的なリスクもあります。こうした事実を承知の上で実行し、速やかに「Crayon Syntax Highligher」のアンインストールを検討ください。

以下はさくらインターネットでの手順です。

従来のサーバコントロールパネル

1. サーバコントロールパネルにログインする。新しい サーバコントロールパネル の場合はこちら
2. 「アプリケーションの設定」->「PHP のバージョン選択」->「古いバージョンに固定する」をクリックする。
3. 「PHP 5.5 (サポート終了)」を選択して「変更」をクリックする。

新しいサーバコントロールパネル

1. 新しいサーバコントロールパネルにログインする。
2. 「スクリプト設定」->「言語のバージョン設定」をクリックする。
3. 「PHP のバージョン」の「設定」で「PHP 5.6 [非推奨] サポート終了 」を選択する。
4. 末尾の「保存する」をクリックする。

対応完了後は

これを機会に他のプラグインや使用しているテーマの最終更新日を確認するのがよいですね、自戒を込めて書いています。

おしまい

コメントを残す

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