12回目の投稿となります。
NHN JAPANの遠藤と申します。
よろしくお願いいたします。
今回はKUSANAGI 新着情報 に紹介されているyum update をしたらPHPのバージョンが7.3になってしまい、動作不具合が起きた、どうやって戻せるか?ってお問い合わせについて書きました。
HHVM or PHP7
少し前までKUSANAGI初期設定時のPHP実行形態デフォルトはHHVMでしたが現在はPHP7になっています。これは色んな理由がありますが、良く聞くのは次の通り。
これは色んな理由がありますが、良く聞くのは次の通り。
- hhvmよりもphpのほうがプラグインが正しく動作する(互換性があると言われていたとしても、プラグイン開発元もhhvmで動作確認していない)
- php5よりhhvm(php5ベース)が早いが、php7ではphp5の遅さを解消している
- hhvmのリリース元のFacebokがhhvmのPHPサポート段階的な終了を発表
そのため弊社のKUSANAGIを載せているホスティングサービスでも古い環境のお客様がhhvmのまま使っていたらphp7への切り替えを提案しています。
でも、切り替えた時はちゃんとプラグインが動いていたのに暫くしたら動かなくなったとかも稀に良く聞きます。
そして暫くしたらと言っても何もしていないのに、ではなく、 yum update したら不具合が発生してしまったというお問い合わせを何度かいただきました。
お問い合わせがあった動作不具合の一例:
WordPressでECサイトを行う時に良く使われているWelcartをご利用のお客様。
この記事を書いている2019/4/10時点でもWelcartのシステム用件はPHP7.2までなので、PHP7.3については動くかもしれないし動いたとしてもサポートが受けれない可能性があります。
PHP7のダウングレード
KUSANAGIは新着情報でも確認出来る通り、モジュールのアップデートが定期的に行われ、PHPのマイナーアップデートも頻度に行われています。
各ミドルウェアは基本的には最新にしたほうがセキュリティなども保たれたり、メリットの方が大きいのですが、時にはアップデート前に戻したいってこともあるかもしれません。
yum update だけだと全てのパッケージが更新されるため、初回のお問い合わせではphpのバージョン差異が原因かの特定は出来ませんでしたが、yum.logからプラグインに影響しそうなモジュールの更新はphpと仮定出来たため、PHPのダウングレードを提案いたしました。
1.リポジトリにあるPHPのパッケージ名を確認する
# yum --showduplicates search kusanagi-php7 ~~省略~~ kusanagi-php7-7.2.12-1.noarch : KUSANAGI PHP7 kusanagi-php7-7.2.13-1.noarch : KUSANAGI PHP7 kusanagi-php7-7.3.0-1.noarch : KUSANAGI PHP7 kusanagi-php7-7.3.0-2.noarch : KUSANAGI PHP7 kusanagi-php7-7.3.1-1.noarch : KUSANAGI PHP7 kusanagi-php7-7.3.2-1.noarch : KUSANAGI PHP7 kusanagi-php7-7.3.3-1.noarch : KUSANAGI PHP7 kusanagi-php7-7.3.4-1.noarch : KUSANAGI PHP7 kusanagi-php7-7.3.4-1.noarch : KUSANAGI PHP7 Name and summary matches only, use "search all" for everything.
2.PHP7.2.xに戻してみる(上の結果から、7.2系で一番新しいものを指定した例)
# yum downgrade kusanagi-php7-7.2.13-1.noarch -y ~省略~ インストール中 : kusanagi-php7-7.2.13-1.noarch 1/2 整理中 : kusanagi-php7-7.3.4-1.noarch 2/2 検証中 : kusanagi-php7-7.2.13-1.noarch 1/2 検証中 : kusanagi-php7-7.3.4-1.noarch 2/2 削除しました: kusanagi-php7.noarch 0:7.3.4-1 インストール: kusanagi-php7.noarch 0:7.2.13-1
3.PHP7のバージョンを確認する
# php7 -v PHP 7.2.13 (cli) (built: Dec 11 2018 17:00:05) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.13, Copyright (c) 1999-2018, by Zend Technologies
指定したバージョンになっていました。その後、Welcartの動作確認をしていただき、無事正常動作に戻りました。
PHP7.2系を使い続けたい場合も、また違うモジュールをアップデートさせる時にyum update するとPHPもまた上がってしまうのでyum update –exclude=kusanagi-php7 とすることで、kusanagi-php7はアップデートから除外されます。