WordPressで利用しているPHP(php-fpm)のバージョンをPHP7.0にバージョンアップしました。環境はUbuntu14.04です。
最近、PHPには触れていないので、かなり高速化されたPHP7.0がリリースされたという噂を聞きつけて、勢いでバージョンアップしてみました。
基本的な作業の流れとしては
- WordPress及びプラグインのアップデート
- インストールされているPHP5.x系を削除
- PHP7.0系をインストール
だけで利用することができました。
以前hhvmでWordPressを動かそうとした時は、利用しているプラグインのキャッシュ周りの処理で躓いてしまってhhvm環境で動かすことを断念しました。PHP7.0環境ではそのような問題もなく、一通り動作しているのを現在確認しています。数日様子を見て、問題なさそうであれば、そのまま稼働させようと思います。
PHP5.x系のアンインストール
PHP5.3系をインストールしていましたが、実際はphp5-fpmしか利用してなかったので
$ sudo apt-get purge php5-fpm
でだいたい消すことができたのですが一部、/etc/init.d/php5-fpm
がexit 1
を返すとかでstopコマンドが正常終了してないと認識してパッケージ削除処理が止まってしまう状態に遭遇しました。そもそもこのスクリプトを独自に編集していたこともあって、期待する動作になってなかったようなのでexit 0
をshebangの下に挿入して切り抜けました。どうせ全部消すので、暫定的な対応で切り抜けた感じです。
PHP7.0をインストール
DegitalOcianで公開されている記事を参考にして、手元のPuppetを書き換えていくだけです。パッケージインストール自体は
$ sudo add-apt-repository ppa:ondrej/php-7.0
$ sudo apt-get update
$ sudo apt-get install php7.0 php7.0-mysql
のような操作で導入できます。私はphp7.0-fpm
を利用しているのでこちらも導入。
php-fpmのSocket Pathが変更されているので、nginxやphp.iniの設定を変更します。
/var/run/php5-fpm.sock
となっている部分を
/var/run/php/php7.0-fpm.sock
と変更してnginxを再起動し、php-fpmを起動すれば、WordPressを利用することができるはずです。
もうしわけありませんがApache + mod_phpを利用している場合は、別途ご自身でお調べください。
利用するPHP拡張によってはPHP7へのバージョンアップは待ったほうが良い
PHPのextensionでは問題や考慮すべきことがありました。
memcache
memcacheを利用しているWordPress Pluginがある場合は注意が必要です。
memcachedのextensionであるmemcacheはPHP7対応はされていません。開発も2013年から止まっているようなので今後PHP7対応版がリリースされることは望みが薄いです。
PHP7でmemcachedを利用したければmemcachedを利用すれば良いのですが、GitHubにあるPHP7向けのブランチを導入することになるので、この辺の知識が必要です。
私の場合はちょっと前からmemcachedを利用するプラグインの使用をやめていたので、この際、memcached関連を全部消しました。
imagick
imagickを利用しているプラグインは結構多いので、こちらも注意が必要です。
現在リリースされているimagickはPHP7に未対応なのですがBeta版が対応してます。
$ sudo apt-get install imagemagick libmagick++-dev
$ sudo pecl install imagick-beta
無事にimagic-betaをコンパイルすることができたら/etc/php/mods-available/imagick.ini
を作成しextension=imagick.so
と書いてphp-fpmを再起動すればimagickを読み込めて利用することができました。
New Relic
New Relicを利用している方はPHP7へのバージョンアップはまだ待ったほうが良さそうです。New Relicでは現在ベータプログラムとしてPHP7版のエージェントを配布しているようです。
PHP7どうなの?
今回、PHP5.x系の状態でのベンチマークを取得していなかったので、PHP7になったことによりどれぐらい早くなったのか記録していませんでした。ですが、明らかに早くなったことを体感できます。特に今までは結構待たされている感じのあったWordPress管理画面がサクサク表示されるようになりました。過去にHHVM化と同程度ぐらいにサクサク表示されます。
PHP7でのベンチマークの記事を参照しても、かなり高速化されているのが伺えます。
PHP5.x系を利用していて、パフォーマンスに悩んでいる方には、試してみることをおすすめします。