使っているサーバーで別バージョンのphp(7.2.0)を使いたかったのでphpenv&php-buildをインストール。
phpenvのインストール
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#まずはphpenv自体のインストール curl -L https://raw.github.com/CHH/phpenv/master/bin/phpenv-install.sh | bash git clone https://github.com/CHH/php-build.git ~/.phpenv/plugins/php-build vim ~/.bash_profile #環境変数書き換え PHPENV_ROOT=$HOME/.phpenv PATH="$PHPENV_ROOT/bin:$PATH" eval "$(phpenv init -)" #下記でも可 echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(phpenv init -)"' >> ~/.bashrc #上記設定を反映 source ~/.bash_profile phpenv #ずらずらとコマンドの詳細が出ればOK |
原則としてユーザー単位で設定するため(そうじゃないこともできるようですが)、各ユーザーごとのディレクトリに配置します。
必要なライブラリのインストール
必要なライブラリがかなり多いため前もってインストールを。
1 |
yum -y install gcc libxml2 libxml2-devel libcurl libcurl-devel libpng libpng-devel libmcrypt libmcrypt-devel libtidy libtidy-devel libxslt libxslt-devel openssl-devel bison libjpeg-turbo-devel readline-devel autoconf bzip2-devel |
これだけインストールしててもまだ出るかもですが、つど調べれば必要なライブラリはわかるはずです。
php install
実際にphpのインストールを行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
phpenv install --list #ここでバージョンがずらずら出ますので phpenv install 7.2.0などとします。(少々時間がかかります。20分〜30分ぐらい) ここではまだインストールしただけで反映していないので、 #カレントディレクトリのみ反映 phpenv local 7.2.0 or #全体に反映 phpenv global 7.2.0 php -v 7.2.0が反映されていればOKです。 |
難しいのがこれはPHPを単にインストールしただけで、apacheで入れるにはphp install バージョンの前にしておくことがありますが、ディレクトリとかの切り替えとかが難しいっぽい・・・
一応メモると
1 2 3 4 5 6 7 8 |
vim /usr/local/share/php-build/definitions/7.2.0 #行頭にこれを追加 configure_option "--with-apxs2" "/usr/sbin/apxs" #この後 phpenv install 7.2.0 http.confを見ると下記が追加されているのがわかるかと思います。 LoadModule php7_module /usr/lib/httpd/modules/libphp7.so |
なお、php5のモジュールを同時に読み込むとapache起動時にSegmentation false
なるエラーが出ます。この場合、http.confやconf.d/以下のapacheの設定ファイルでphp5のモジュールを読み込んでいる場所がないかを確認しましょう。
追記
phpenv installの前に下記のようなエラーが出たのでコメントアウトしたら動きました・・・なんだったんだろう・・
1 |
/usr/local/bin/rbenv-install: line 128: phpenv-hooks: コマンドが見つかりません |
[…] phpenv+php-build 複数のPHPのversionを使いわけ […]
[…] phpenv+php-build 複数のPHPのversionを使い分け […]