レガシーなプロジェクトではいまだにPHP5.3なんかを使うケースがあったりします。
これがCentOS6だったらyumでphp5.3とかだったらいいんですが、サーバーはCentOS7だったりするとなかなか大変です。
流石にCentOS7とかだとyumで入れても5.3ははいりません。
となると選択肢としては
- ソース自体をダウンロードしてコンパイル
- phpenv
かと思うのですが、色々迷った末、phpenvで5.3を入れることに。
phpenv自体は入れるのはそれほど難しくなかったんですが、サーバー自体がnginx+php-fpmで動かす要件だったため、php-fpmにphpenvを読み込ませるが少々手間だったのでメモしておこうと思います。
ちょっと前にもapacheでphpenvのインストールをする機会がありまして、結構大変でしたね・・・
phpenv+php-build 複数のPHPのversionを使い分け
phpenvでglobalで5.3を入れたあとですが、phpを5.3にしただけではWebからアクセスした時にはまだ読み込めていません。php-fpmに読み込ませる必要が出てきます。
php-fpmに読み込ませるためですが、phpenv内にあるphp-fpm用の設定ファイルを下記コマンドでコピーしておきましょう。
1 2 |
cp ~/.phpenv/versions/x.x.x/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/x.x.x/etc/php-fpm.d/www.conf cp ~/.phpenv/versions/x.x.x/etc/php-fpm.conf.default ~/.phpenv/versions/x.x.x/etc/php-fpm.conf |
あとはphpenvのなかに入っているphp-fpmを直で実行しましょう。
1 |
~/.phpenv/versions/x.x.x/sbin/php-fpm |
一番簡単なパターンはこれでOKかと思います。
phpenvで最新版のPHPをインストールしてWebサイトで使用する
php-fpm時に下記のようなエラーが出ましたが、設置のコメントアウトを外したらなんとかいけました。曖昧な理解ですが・・・・
1 2 |
[ALERT] [pool www] pm.min_spare_servers(0) must be a positive value [ERROR] failed to post process the configuration |
簡単な場合はこれでなんとかなると思いますが、もともとyumでphpやphp-fpmを入れていると面倒かと思います。
その場合、
- php-fpmにphpenvのシンボリックリンクを貼る
- 起動スクリプトを書く(直起動させるなら不要です。)
などが必要です。(リンク参照)
最終的にはphpinfoでバージョンやphpのパスなどを確認しましょう。
systemd下でphpenvを使って複数バージョンのphp-fpmを動かす