PHP7.3に更新されたことで、一部の記事が表示されなくなっていました。
つい先日まで気づいておらず、当サイトに訪問された方にご迷惑をおかけしていたかもしれません、申し訳ありません。。
こんな悲劇を他の人にも会わせたく無いので、自分の覚書もかねてまとめます。
原因は記事内で使用しているプラグイン
ごちゃごちゃした細かい話は抜きにして、結論から言うと、私の場合記事内で使用していたCrayon Syntax Highlighterというプラグインが原因でした。
このプラグインは、記事内にコードを綺麗に表示させるとても便利なプラグインなのですが、更新が数年前から止まっており、おそらくサポートが終了しているようなので、今回のPHP7.3への仕様変更が追いつかなかったものと思われます。
ちなみに、今回Crayon Syntax Highlighterのプラグインが原因で発生したエラーですが、決してこのプラグインが悪いものであると言うつもりはありません。
むしろプラグインの手直しをして私は使い続けています。
そのカスタマイズ方法は次の項目でご紹介します。
▼ プラグインの紹介記事はこちら ▼
結局どうすればいいの?
PHPの更新をしたけどやっぱりCrayon Syntax Highlighterが使いやすいから使い続けたい!という方もいると思います(私もそうでした)
今回のエラーは既存のプラグインファイルをたった一行書き換えるだけで解決します。
上記の記事を参考に、ファイルを編集していきます。
編集するファイルは、プラグインフォルダ直下のcrayon_langs.class.phpというファイルです。
その340行目にある
1 |
return preg_replace('/[^\w-+#]/msi', '', $id); |
という記述を編集します。
途中の[^\w-+#]の部分を[^\w+#-]に書き換え、
1 |
return preg_replace('/[^\w+#-]/msi', '', $id); |
とします。
ハイフンの位置が後ろにずれた感じですね。
あとはFTPソフト等でアップロードしなおせば解決です!
なぜ記事が表示されなくなったのか
では、今回PHP7.3に更新することで何が変わったのか。
更新内容は色々とありますが、今回は正規表現の仕様変更が原因で起きたエラーのようです。
正直私も完全には理解しきれていませんが、下記の記事を参照すると、ハイフンの位置によってエラーを吐くようになってしまったようですね。
最後に
今回は特定のプラグインが原因で不具合になった場合の解決方法を紹介しました。
7.3へのアップデートに伴う仕様変更は他にもありますので、原因はそれぞれあるかと思いますが、同じ症状で悩んでいる方の解決の手助けになれば幸いです。