CentOS7にphpenvをインストールしてみる

PHPを使っていると、バージョンアップするのが大変です。PHP5.6を使っているけど7を使いたいとか、逆に最新版ではなく安定版を使ってどこか違う環境(同一サーバー内)で最新版の実験をしたいなどあるかもしれません。どこで今回はPHPのバージョン管理できるphpenvを使って実際に環境構築できるか試したみたいと思います。

環境

  • CentOS7
  • rootユーザーで実行します

リポジトリのインストール

[root@hostname ~]# yum install epel-release

phpenvとphp-buildのインストール

[root@hostname ~]# curl -L https://raw.github.com/CHH/phpenv/master/bin/phpenv-install.sh | bash
[root@hostname ~]# git clone git://github.com/CHH/php-build.git ~/.phpenv/plugins/php-build
[root@hostname ~]# cd .phpenv/plugins/php-build/
[root@hostname ~]# sh install.sh

パスを通す

[root@hostname ~]# echo 'export PATH="$HOME/.phpenv/bin:$HOME/.phpenv/versions/7.0.0RC5/sbin:$PATH"' >> ~/.bashrc

[root@hostname ~]# echo 'eval "$(phpenv init -)"' >> ~/.bashrc

[root@hostname ~]# exec $SHELL -l

必要なパッケージをインストール/h4>

[root@hostname ~]# yum install libxml2-devel bison bison-devel openssl-devel curl-devel libjpeg-devel libpng-devel libmcrypt-devel readline-devel libtidy-devel libxslt-devel

re2cのインストール

[root@hostname ~]# wget -P /usr/share/ https://sourceforge.net/projects/re2c/files/0.14.3/re2c-0.14.3.tar.gz
  
[root@hostname ~]# tar zxvf re2c-0.14.3.tar.gz -C /usr/share/
  
[root@hostname ~]# cd re2c-0.14.3
[root@hostname ~]# ./configure
[root@hostname ~]# make install

若干時間かかりますがすぐおわります

インストールできるPHPのバージョン確認

[root@hostname ~]# php-build --definitions
5.2.17
5.3.2
5.3.3
5.3.6
5.3.8
5.3.9
5.3.10
5.3.11
5.3.12
5.3.13
5.3.14
5.3.15
5.3.16
5.3.17
5.3.18
5.3.19
5.3.20
5.3.21
5.3.22
5.3.23
5.3.24
5.3.25
5.3.26
5.3.27
5.3.28
5.3.29
5.4.0
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.4.7
5.4.8
5.4.9
5.4.10
5.4.11
5.4.12
5.4.13
5.4.14
5.4.15
5.4.16
5.4.17
5.4.18
5.4.19
5.4.20
5.4.21
5.4.22
5.4.23
5.4.24
5.4.25
5.4.26
5.4.27
5.4.28
5.4.29
5.4.30
5.4.31
5.4.32
5.4.33
5.4.34
5.4.35
5.4.36
5.4.37
5.4.38
5.4.39
5.4.40
5.4.41
5.4.42
5.4.43
5.4.44
5.4.45
5.4snapshot
5.5.0
5.5.1
5.5.2
5.5.3
5.5.4
5.5.5
5.5.6
5.5.7
5.5.8
5.5.9
5.5.10
5.5.11
5.5.12
5.5.13
5.5.14
5.5.15
5.5.16
5.5.17
5.5.18
5.5.19
5.5.20
5.5.21
5.5.22
5.5.23
5.5.24
5.5.25
5.5.26
5.5.27
5.5.28
5.5.29
5.5.30
5.5.31
5.5.32
5.5.33
5.5.34
5.5.35
5.5.36
5.5.37
5.5.38
5.5snapshot
5.6.0
5.6.1
5.6.2
5.6.3
5.6.4
5.6.5
5.6.6
5.6.7
5.6.8
5.6.9
5.6.10
5.6.11
5.6.12
5.6.13
5.6.14
5.6.15
5.6.16
5.6.17
5.6.18
5.6.19
5.6.20
5.6.21
5.6.22
5.6.23
5.6.24
5.6.25
5.6.26
5.6.27
5.6.28
5.6.29
5.6.30
5.6snapshot
7.0.0
7.0.1
7.0.2
7.0.3
7.0.4
7.0.5
7.0.6
7.0.7
7.0.8
7.0.9
7.0.10
7.0.11
7.0.12
7.0.13
7.0.14
7.0.15
7.0.16
7.0.17
7.0snapshot
7.1.0
7.1.1
7.1.2
7.1.3
7.1snapshot
master

色々なバージョンがインストールできます。とりあえず、PHP5.6の最新版と7系をいれてみたいと思います。

PHP5.6.30のインストール

  [root@hostname ~]# php-build 5.6.30 ~/.phpenv/versions/5.6.30
[Info]: Loaded extension plugin
[Info]: Loaded apc Plugin.
[Info]: Loaded composer Plugin.
[Info]: Loaded github Plugin.
[Info]: Loaded uprofiler Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: Loaded zendopcache Plugin.
[Info]: php.ini-production gets used as php.ini
  
[Info]: Building 5.6.30 into /root/.phpenv/versions/5.6.30
  
[Downloading]: https://secure.php.net/distributions/php-5.6.30.tar.bz2
  
[Preparing]: /tmp/php-build/source/5.6.30 #ここで少し読み込みが止まります。フリーズしたのかな?って思うぐらい止まります。※環境によるかもしれません
  
[Compiling]: /tmp/php-build/source/5.6.30 #ここでかなり長く読み込みが止まります。フリーズしたのかな?って思うぐらい止まります。ランチタイムにしたり、コーヒーを飲んで落ち着いているのもあり。もしくはPCから離れて散歩に行くのも有りです。※環境によるかもしれません

[xdebug]: Installing version 2.5.0
[xdebug]: Compiling xdebug in /tmp/php-build/source/xdebug-2.5.0
  
[xdebug]: Installing xdebug configuration in /root/.phpenv/versions/5.6.30/etc/conf.d/xdebug.ini
  
[xdebug]: Cleaning up.
[Info]: Enabling Opcache...
[Info]: Done
[Info]: The Log File is not empty, but the Build did not fail. Maybe just warnings got logged. You can review the log in /tmp/php-build.5.6.30.20170409122240.log

[Success]: Built 5.6.30 successfully.

インストール完了

確認

[root@hostname ~]# phpenv versions
  5.6.29
* 5.6.30 (set by /root/.phpenv/version)
  7.0.17
  7.1.3

※他のバージョンもインストールしていると一緒に表示されます

全体でPHP5.6.30を使う用に設定

  [root@hostname ~]# phpenv global 5.6.30
  [root@hostname ~]# phpenv rehash
  

PHPのバージョン確認

[root@hostname ~]# php -v
PHP 5.6.30 (cli) (built: Apr  8 2017 16:14:38)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
    with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans

全体でPHP5.6の環境になりました

指定したディレクトリでPHP7を使う

CentOSのデフォルトのドキュメントルート/var/www/htmlディレクトリだけPHP7.0.13にしてみたいと思います。
※事前にPHP7.0.13をインストールしておいてください。

  [root@hostname ~]# cd /var/www/html/
  [root@hostname ~]# phpenv local 7.0.17
  [root@hostname ~]# phpenv rehash
  [root@hostname ~]# php -v
PHP 7.0.17 (cli) (built: Apr  8 2017 17:20:03) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.17, Copyright (c) 1999-2017, by Zend Technologies
    with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans
  

無事にインストールできました

参考サイト