リモートメンテナンスしているFreeBSDサーバーの上で動いている WordPress用 PHP環境を更新することにしました。
FreeBSD.org の場合は、すでにPHP5.6系をばっさり切り捨てていて、php5.6系はバイナリーダウンロードも、portsからのソースビルドも出来なくなっています。WordPress.org 自体はまだ PHP5.6系をギリギリサポートしているのにね。
FreeBSDでは pkg version コマンドで確認してみると、PHP5系はもう存在自体していない。ひどい話。
iOSやAndroidのように強制的にバージョンアップされれる事はありませんので、インストールしている限りは使い続けることが出来ますが、間違って消してしまうとやばい。また、WordPress plugin がPHP5未対応のものに遭遇する可能性があります。
> pkg version -vL= | grep php mod_php56-5.6.40 ? orphaned: www/mod_php56 php56-5.6.40 ? orphaned: lang/php56 php56-bz2-5.6.40 ? orphaned: archivers/php56-bz2 php56-ctype-5.6.40 ? orphaned: textproc/php56-ctype php56-curl-5.6.40 ? orphaned: ftp/php56-curl php56-dom-5.6.40 ? orphaned: textproc/php56-dom php56-filter-5.6.40 ? orphaned: security/php56-filter php56-ftp-5.6.40 ? orphaned: ftp/php56-ftp php56-gd-5.6.40 ? orphaned: graphics/php56-gd php56-hash-5.6.40 ? orphaned: security/php56-hash php56-json-5.6.40 ? orphaned: devel/php56-json php56-mbstring-5.6.40 ? orphaned: converters/php56-mbstring php56-mcrypt-5.6.40 ? orphaned: security/php56-mcrypt php56-mysql-5.6.40 ? orphaned: databases/php56-mysql php56-mysqli-5.6.40 ? orphaned: databases/php56-mysqli php56-openssl-5.6.40 ? orphaned: security/php56-openssl php56-session-5.6.40 ? orphaned: www/php56-session php56-simplexml-5.6.40 ? orphaned: textproc/php56-simplexml php56-tokenizer-5.6.40 ? orphaned: devel/php56-tokenizer php56-xml-5.6.40 ? orphaned: textproc/php56-xml php56-zip-5.6.40 ? orphaned: archivers/php56-zip php56-zlib-5.6.40 ? orphaned: archivers/php56-zlib
PHP5.6がサポートされなくなり、Statpress visitors が動かなくなるという致命傷もあります(php56-mysql がサポートされなくなり終焉)けど代替機能はあきらめ、メンテナンス性を優先させるためPHP7系に上げることにします。
FreeBSD 11.2 上での作業手順
- Apacheを停止
サービスを動かしたまま作業するのは危険なので、一旦停止 - phpMyAdmin をバックアップ
FreeBSD.org では phpMyAdminが廃止されていてpkgとしては入手できないため phpMyAdminをバックアップしておきます。# pkg create phpMyAdmin
- php56系をまとめて消す
# pkg delete php56\-\*
- 依存関係削除にmod_phpは含まれないので、別に消す。
# pkg delete mod_php56
- wordpress を道連れインストール
# pkg install wordpress
なぜか、mod_php7.2が選択されないけど、それ以外のパッケージは選択されるようです。
New packages to be INSTALLED:
wordpress: 5.1.1,1php72-xml: 7.2.18php72: 7.2.18libargon2: 20171227_1php72-hash: 7.2.18php72-gd: 7.2.18php72-ftp: 7.2.18php72-curl: 7.2.18php72-tokenizer: 7.2.18php72-mysqli: 7.2.18php72-zlib: 7.2.18php72-zip: 7.2.18libzip: 1.5.2 - この後で、wordpressは要らないので消去
# pkg delete wordpress
- 必要ならphpMyAdminは2でバックアップしたものを再インストールする
- mod_php72をインストール(mod_phpが働かないと、WordPressが真っ白のページになる)
# pkg install mod_php72
- httpd.conf を php5.2から 7.2 用に書き替える。(青字の行が before、赤字が after) これを忘れると、phpモジュールのバージョンミスマッチで、WordPressページが真っ白になる。
AddHandler cgi-script .cgi # For type maps (negotiated resources): #AddHandler type-map var #AddHandler php5-script .php AddHandler php7-script .php
- このあとで、Apache を再起動して動作確認。
余談ですが、FreeBSD でWordPressを使用する場合にhttpd.conf の PHP用にカスタマイズが必要な箇所は、前のメモを参照のこと。 こちらは php5 用に記述したものです。
以上の、作業で WordPress が PHP5.6 環境で動作しているものを PHP7.2環境に移行できました。
ただし、使用中のPlugin が正常に動作するかどうかは、PHP7に対応しているかどうかによるため、テストが必要です。