しばらく前から、自動で届くFreeBSD OSのセキュリティーレポートに、PHP8.0 はサポート終了間近なので、早く8.1以上に上げろ と書かれたメッセージが届くようになっていました。
特にPHP バージョン8.0 にこだわりがある訳じゃなく、単純にOSをFreeBSD11から12に上げた時、OS側のサポートがPHP7.4から8.0に替わったためで、プログラムを書くわけじゃないのでPHPバージョンなんて何でもいい。
過去、PHPバージョンを切り替えた時、常にWordPress 運用に何らかの影響が出たので、できることならやりたくない作業です。しかし、すでに OSを12.4に上げてしまったので、PHPも8.1に切り替えるべきなんでしょう。
/usr/ports/UPDATING には、昨年末の時点で、以下のように書かれています。
20221126: AFFECTS: users of lang/php80 AUTHOR: bofh@FreeBSD.org The default version of PHP has been switched from 8.0 to 8.1. If you use binary packages you should make a list of php packages before running 'pkg upgrade': # pkg info \*php80\* > ~/installed-php-ports-list After the upgrade, check with such list if all your php extensions are still installed, and reinstall them if needed. If you use mod_php80 you need to deinstall it and install mod_php81.
問題は、いつ、どのように作業するか!
いつ というのは、深夜1時過ぎ頃から作業としましょう。サーバーを停めても、困るのは邪魔なクローラーくらいですからね。
どうやっての?の方は少し考えが必要。
PHPはWordPressと絡む他、
- Apache
- MySQL
- phpMyAdmin
との接続モジュールも一緒に更新する必要があり、毎回何かトラブります。pkg upgrade php81 コマンド一発じゃ終わらない!
今回の計画は次の通り。
- pkg install wordpress で、現時点のWordPress インストールに伴う関連パッケージ一括インストールを試してみる
- mod_php は手動で、抜き 入れする。
- テストする。
- phpMyAdmin は(メモとしては書いたけど、)不要。使うタイミングで入れ替えればいい。
やってみたところ、再検討が必要な状況に。
New packages to be INSTALLED: ImageMagick7-nox11: 7.1.0.62_2 php81: 8.1.17 php81-curl: 8.1.17 php81-exif: 8.1.17 php81-fileinfo: 8.1.17 php81-ftp: 8.1.17 php81-gd: 8.1.17 php81-mysqli: 8.1.17 php81-pecl-imagick-im7: 3.7.0_1 php81-tokenizer: 8.1.17 php81-xml: 8.1.17 php81-zip: 8.1.17 php81-zlib: 8.1.17 wordpress: 6.1.1,1 Number of packages to be installed: 14 The process will require 124 MiB more space. 28 MiB to be downloaded. Proceed with this action? [y/N]:
依存関係のためか、なぜか ImageMagick が巻き込まれてしまいました。
それに、更新される phpモジュール数が現在のものと違う。というか新規インストールされるモジュール数が少ない。そして予想通り mod_phpは手動になりそう。
php80-xxx 個別拡張モジュールを抜く作業を事前に手動で行っていないため、wordpressインストールを拒否されるかと思っていたのに、pkg install コマンドだけで先に進めそうなことにちょっと驚きでした。
y で進めてみると、、、、、古いバージョンは新しいバージョンで置き換えられそうなメッセージが出てくるものの、結局
pkg: ImageMagick7-nox11-7.1.0.62_2 conflicts with ImageMagick6-nox11-6.9.12.77_2,1 (installs files into the same place). Problematic file: /usr/local/bin/Magick++-config
で、途中終了。PHPの conflict じゃなく、予想外にImageMagick のconflictで止まりました。
手動で、ImageMagick を抜いて、pkg install wordpress をやり直したところ、WordPress と php8.1系の関連モジュール(そしてバージョン違いのImageMagick)がインストールできました。
このあとで、パッケージの wordpress と mod_php80 を抜いて、mod_php81 をインストール。更に、必要かどうかはわからないけどWordPressプラグインが必要とするかもしれない(php80-xxxx なので消されてしまった)PHP8.1系モジュールを追加インストール。
pkg install php81-bz2 php81-ctype php81-dom php81-filter php81-iconv php81-mbstring php81-session php81-simplexml
mysql-server と apache24 を再起動し、サイトの状態を確認したところ、、、、ぱっと見、エラーは出ずに動いている感じ。全ページを開いてみたわけじゃないので、管理者用ページとか、メニューなんかが異常動作するかもしれませんが、致命傷はなさそう。今後もしばらく様子見です。
個人的には一大イベントでしたけど、30分もかからずに作業完了。めでたしめでたし。