前置き
WordPressの次期バージョンからはPHP 5.4で動作しなくなり、PHP 5.6以上が要求される。試しにRedHat Enterprise Linux 7 (RHEL7)の環境でWordPress 5.2 beta3をインストールしようとすると以下のようなメッセージが表示されるだけでインストール画面すら表示されない。
Your server is running PHP version 5.4.16 but WordPress 5.2-beta3 requires at least 5.6.20.
CentOSであればRemiリポジトリを使って新しいPHPを利用することが一般的だと思われる。しかしRHEL7で同様にするとRedHatのサポートが得られなくなってしまうため、サポートを得られる方法で新しいバージョンのPHPを使う方法を考える。
対策方法
RedHat Software Collections (RHSCL)を利用する方法があり、期間の制限はあるがRedHatのサポートが得られる。PHP 7.2であれば2020/11までサポートされる。2019年12月に追加されたPHP 7.3は2021/12までとなっている。
既にPHP 5.6は2018/4でサポートが終了しているため、今回は検討しない。
インストールする環境について
PHP 7.2を導入する際にはいくつかの方法が考えられるが、RHSCL版PHPとApache httpdをセットでインストールする方法は他の人が書いていると思われる。
そのため、以下のような環境を想定してみる。
- 同一サーバで他にもPHPアプリが動作している
- 他のPHPアプリはPHP 7.2で動作するか検証できてない
- 既存のPHPアプリへの影響が無いように設定する
- そのため指定したPHPアプリでだけPHP 7.2を利用する
- httpdを2つ動作させて80と81ポートで待ち受けのようなことはしたくない
というケースを想定して導入してみる。
両方でDSO(mod_php)を利用しようとすると条件を満たせないため、少なくともPHP 7.2ではphp-fpmを利用する必要がある(リバースプロキシの導入は今回は考えない)。
インストールと設定
httpdとPHP 5.4、PHP7.2をインストールする。
# yum install httpd php
# yum-config-manager --enable rhel-server-rhscl-7-rpms
# yum install rh-php72 rh-php72-php-fpm
php-fpm を起動する。必要に応じて事前にポート番号を変えたりUNIXソケットを利用するよう設定を変えておく。
# systemctl start rh-php72-php-fpm
# systemctl enable rh-php72-php-fpm
テスト用のディレクトリとファイルを作成する。
# mkdir -p /var/www/html/php56
# echo '<?php phpinfo();' > /var/www/html/php56/phpinfo.php
# mkdir -p /var/www/html/php72
# echo '<?php phpinfo();' > /var/www/html/php72/phpinfo.php
テスト用のhttpdの設定を行う。
<Directory /var/www/html/php56>
</Directory>
<Directory /var/www/html/php72>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
SetHandler proxy:fcgi://127.0.0.1:9000
</FilesMatch>
</Directory>
httpdをリロードする
# systemctl reload httpd
ウェブブラウザで両方のディレクトリにアクセスして表示されるPHPのバージョンを確認する。