運用しているサーバーのPHPを7.4→8.3へバージョンアップしてみたお話

当サイトも2004年の開設から20年過ぎました。
その間にPHPのバージョンも5→8へ上がりました。
最近までPHP7.4を使用しており、このほどようやくPHP8.3へバージョンを上げました。
ですが一筋縄ではいかなかったことがいくつかありましたので、忘備録として記録いたします。
PHP8.3にバージョンを上げられなかった理由

PHP8.3へ上げれば、速度が速くなるなどパフォーマンス面でメリットがあることは知っていました。
でもなかなか上げることができませんでした。
それは以下の理由によります。
- 独自CMSのバージョンアップが必要
- ワードプレスのテーマのバージョンアップが必要
- RSSプログラムの調整が必要
なんだそんなことか。
という感じですが、事態は思ったより深刻でした。
試しに何もバージョンアップせずにPHP8.3にしてみたところ・・・・、
・お知らせは表示されない。
・ワードプレスは致命的エラー。
・RSSは取得できない。
と非常に困った状態になりました。
PHP8.3にバージョンアップするためには、これら3つのことを同時に対応しなければいけません。
ということで、しばらく放置せざるを得ない状態でした。
それでもバージョンを上げようと思った理由

ひとえに、パフォーマンスの改善です。
以前から、本ブログが重たい現象が発生していました。
要因はいろいろとありますが、PHP8.3にすることで改善が期待できるためです。
それに、PHP8.3へバージョンを上げることは、今後の役に立つとも思いました。
ということで、以下の手順でバージョンを上げました。
- PHP8.3のテスト環境で現状のサイトを複製する
- エラーになる部分を解消する
- 実機に修正分をアップする
- 実機のPHPバージョンを8.3に上げる
まずはテスト環境をおこす
対応箇所が多いと、実機で1個ずつ直すのはあまりよくありません。
正しく表示されない期間が長引くためです。
更新は迅速に。それが鉄則です。
ですが、修正作業にはそれなりに時間がかかります。
ということで、サイトをローカル環境で複製し、1個ずつ修正します。
これならば、実機に影響が出ません。
全部修正したところで、一気にUPすればよいのです。
早速PHP8.3にバージョンを上げたxamppが役に立ちます。
エラーになる部分を解消する

テスト環境を起こすことができたら、今度はPHP8.3でエラーになる部分を修正してゆきます。
独自CMSのアップデート
独自CMSは、すでにPHP8.3に対応したバージョンがあったので、差し替えて完了です。
ワードプレスのアップデート
次に本ブログのワードプレスをPHP8.3で動くようにします。
ワードプレス自体は、PHP8.3に対応しているので、何も問題ないと思っていたら、「致命的なエラー」が発生しました。
エラーメッセージを調べてみると、どうやらプラグインの「Crayon Syntax Highlighter」がPHP8.3に対応していないため、あちこちでエラーが発生していました。
これは、後継プラグインである「Urvanov Syntax Highlighter」をインストールすることで解消できました。
旧Crayon Syntax Highlighterを無効化しエラーが出なくなりました。
ですがワードプレスのエラーはそれだけではありませんでした。
ブログに使用しているテーマが古く、PHP8.3に対応していませんでした。
さっそくテーマの配布元サイトから、最新バージョンをダウンロードしました。
しかし、ここで問題がありました。
テーマに、スタイルシートや、RSSなど様々な改修を入れており、これらが消えてしまうと、なかなか復元が大変です。
さすがにそれは嫌だなと思いました。
バージョンアップに踏み切れなかった理由もそこにあります。
ですが、本ブログで使用していたテーマは、ローカル改修と、本体が分離しており、本体だけのアップデートで対応できました。
思ったより簡単にアップデートできて助かりました。
RSS読み取りのラップデート
本サイトのトップページに、本ブログの記事一覧をMagpieRSSを表示して使用しています。
ですが、更新がすでに停止しており、PHP8.3に対応していません。
MagpieRSSはPHPで動作するRSS取得ツールですが、代替も良さそうなのがありません。
ということで、修正することにしました。
細かなことは割愛しますが、キャッシュの根本的な部分等が、PHP8.3に対応しておらず、修正が大変でした。
思わぬところでつまづきました。
実機に修正部分をアップする
PHP8.3のテスト環境で動作することを確認したら、実機にアップしました。
その際に、PHP7.4のままでUPし、ちゃんと動作するかを確認します。
PHP8.3に対応すれば、PHP7.4でも動作します。
この段階でエラーになるならば、すぐに戻し、再修正です。
幸い特に問題もなくPHP7.4で動作してくれました。
実機PHPのバージョンを8.3へ上げる

最後に、サーバーの管理画面からPHPのバージョンを7.4→8.3へ上げました。
一番最初は大惨事だったので、緊張しながらもバージョンを上げます。
確認してみると、ちゃんと動作していました。
これでバージョンアップ作業は完了です。
とはいえ、PHP8.3へバージョンアップするのは、想像以上に修正箇所が多い印象でした。
ワードプレスでさえ、本体は大丈夫でも、プラグインやテーマが古いと、手動で何とかしなくてはいけません。
思ったより骨の折れる作業でした。
ただ、今後PHP8.3への対応が増えると考えられます。
自社サイトでバージョンアップの練習ができたと思えば、良い経験ができました。