WordPress: PHPを5.6系から7.2系に切り替える

リモートメンテナンスしている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 上での作業手順

  1. Apacheを停止
    サービスを動かしたまま作業するのは危険なので、一旦停止
  2. phpMyAdmin をバックアップ
    FreeBSD.org では phpMyAdminが廃止されていてpkgとしては入手できないため phpMyAdminをバックアップしておきます。

    # pkg create phpMyAdmin
  3. php56系をまとめて消す
    # pkg delete php56\-\*
  4. 依存関係削除にmod_phpは含まれないので、別に消す。
    # pkg delete mod_php56
  5. wordpress を道連れインストール

    # pkg install wordpress
    

    なぜか、mod_php7.2が選択されないけど、それ以外のパッケージは選択されるようです。

    New packages to be INSTALLED:

    wordpress: 5.1.1,1
    php72-xml: 7.2.18
    php72: 7.2.18
    libargon2: 20171227_1
    php72-hash: 7.2.18
    php72-gd: 7.2.18
    php72-ftp: 7.2.18
    php72-curl: 7.2.18
    php72-tokenizer: 7.2.18
    php72-mysqli: 7.2.18
    php72-zlib: 7.2.18
    php72-zip: 7.2.18
    libzip: 1.5.2
  6. この後で、wordpressは要らないので消去
    # pkg delete wordpress
  7. 必要ならphpMyAdminは2でバックアップしたものを再インストールする
  8. mod_php72をインストール(mod_phpが働かないと、WordPressが真っ白のページになる)
    # pkg install mod_php72
  9. 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
    
  10. このあとで、Apache を再起動して動作確認。
余談ですが、FreeBSD でWordPressを使用する場合にhttpd.conf の PHP用にカスタマイズが必要な箇所は、前のメモを参照のこと。 こちらは php5 用に記述したものです。

以上の、作業で WordPress が PHP5.6 環境で動作しているものを PHP7.2環境に移行できました。

ただし、使用中のPlugin が正常に動作するかどうかは、PHP7に対応しているかどうかによるため、テストが必要です。

コメントを残す