最新の記事や関連記事をお探しの方は下の「サイト内検索」で検索してみてください。
- WordPressが動いているPHPのバージョンを7.3にした
- Crayon Syntax HighlighterがPHP7.3未対応だったので、本文が表示されない
- 有志が対応したバージョンを公開してくれているのでそれにアップデートしたら表示されるようになった
このサイトはページ内でのソースコードの見た目を良くするためのプラグイン、Crayon Syntax Highlighterを使ってます。
先日、WordPressの動いているPHPを7.3にバージョンアップしたんですよ。そしたらですね、ソースコードを書いている記事のページで本文が表示されなくなったんですね。
よくよく調べてみるとエラーログに次のような内容のエラーが出てました。
PHP Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /var/www/html/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340, referer: xxxx
PHP Fatal error: Uncaught Error: Call to a member function id() on array in /var/www/html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php:36\nStack trace:\n#0 /var/www/html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php(538): CrayonFormatter::format_code(”, Array, Object(CrayonHighlighter))\n#1 [internal function]: CrayonFormatter::delim_to_internal(Array)\n#2 /var/www/html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php(516): preg_replace_callback(‘#()#msi’, ‘CrayonFormatter…’, ‘$ gem install d…’)\n#3 /var/www/html/wp-content/plugins/crayon-syntax-highlighter/crayon_highlighter.class.php(166): CrayonFormatter::format_mixed_code(‘$ gem install d…’, Object(CrayonLang), Object(CrayonHighlighter))\n#4 /var/www/html/wp-content/plugins/crayon-syntax-highlighter/crayon_highlighter.class.php(186): CrayonHighlighter->process()\n#5 /var/www/html/wp-content/plugins/crayon-syntax-highlighter/crayon_wp.class.php(703): CrayonHighlighter->output(true, false)\n#6 /var/w in /var/www/html/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 36, referer: xxxxx
Warningはひとまずおいといて、 Fatal error が出ているじゃないですか。
どうやらCrayon Syntax Highlighterが影響しているようです。
Crayon Syntax Highlighterは3年前から更新が止まっています。
なので、公式が対応してくれるのを待つのは難しく、他のプラグインにするにも手間がかかるため、自分で修正しようかと思った矢先に、有志の方が対応バージョンを公開してくれていました。
ここから
Source code (zip)
のリンクからダウンロードしたzipファイルを展開したら crayon-syntax-highlighter-2.8.6
というディレクトリがあるので、その中身をまるごと現在の wp-content/plugins/crayon-syntax-highlighter
の中に上書きアップロードします。
そうするとPHP7.3でもエラーが出なくなり、ソースコードもきれいに表示されるようになりました。
どこが問題だったかとかは次のページで詳しく書かれています。興味のあるかたは読んでみてください。
※英語ページです。
個人的には PHP7.3 から正規表現の拡張機能がPCRE2にアップデートされた影響かなって思ってます。
コメント
[…] PHP7.3で動かないCrayon Syntax Highlighterを動くようにする https://tamulab.jp/crayon-syntax-highlighter-for-php-73/ […]
[…] tamulab.jpPHP7.3で動かないCrayon Syntax Highlighterを動くようにするhttps://tamulab.jp/crayon-syntax-highlighter-for-php-73/WordPressが動いているPHPを7.3にバージョンアップしたらCrayon Syntax Highlighterが動かなく […]