phpenvを使ってPHPのバージョンを簡単に切り替えよう
こんにちは。開発部まつおかです。
PHP7がまもなくリリースということで、、、PHP7について話したいところではあるのですが、まだ記事にできるほど調査できていない部分もあります。
https://wiki.php.net/todo/php70
ですので今回は少し横道にそれますが、PHPバージョンの切り替えツールの「phpenv」について紹介しようと思います。
phpenv+php-build導入
php-buildでphpをビルドしphpenvで切り替える、といった形になります。
(今回は、php-buildはphpenvのプラグインとして使用します)
前提事項
- CentOS(手順を確認したのは、CentOS6.5)
- Gitインストール済み
- rbenvが入っていない(rbenvが入っていた場合、少しだけ変わるので)
phpenvのインストール
下記のコードでphpenvをダウンロードします。
git clone https://github.com/laprasdrum/phpenv.git ~/.phpenv
.bashrcに下記を追加しましょう。(.bashrcはホームディレクトリに存在します。)
# phpenv settings export PATH="$HOME/.phpenv/bin:$PATH" eval "$(phpenv init -)"
.bashrcの変更内容を適用します。
source ~/.bashrc
php-buildのインストール
phpenvのプラグインとして使うので、ダウンロードするだけでOKです。
git clone git://github.com/CHH/php-build.git ~/.phpenv/plugins/php-build
必要なツール、ライブラリのインストール
yumでインストールできるもの
sudo yum install -y libxml2-devel openssl-devel libcurl-devel libjpeg-devel libpng-devel libmcrypt-devel readline-devel libtidy-devel libxslt-devel
bison-2.7のインストール
※いろいろ調べましたが、2.7より新しいバージョンではエラーが出るようです
cd /usr/local/src wget http://ftp.gnu.org/gnu/bison/bison-2.7.tar.gz tar zxvf bison-2.7.tar.gz cd bison-2.7 ./configure make make install
re2cのインストール
cd /usr/local/src wget http://downloads.sourceforge.net/project/re2c/re2c/0.14.3/re2c-0.14.3.tar.gz tar zxvf re2c-0.14.3.tar.gz cd re2c-0.14.3 ./configure make make install
phpenvでPHPのインストール
■基本のインストールコマンド
phpenv install [バージョン]
ちなみにインストール可能なバージョン一覧は下記で表示することができます。
phpenv install -l
試しに5.6.14を標準インストールしてましょう。
PHP5.6.14のインストールをします。
※非常に時間がかかります。
phpenv install 5.6.14
インストール後に下記コマンドを実行して更新します。
phpenv rehash
インストール済みバージョンの確認します。
phpenv versions
すると、下記のように出力されるかと思います。
上記で指定したバージョンのインストールができていれば成功です。
[root@vagrant-centos65 ~]# phpenv versions *system 5.6.14
では実際に切り替えてみましょう。
(今回はglobalで切り替えを行います)
phpenv global 5.6.14
確認すると、、、
[root@vagrant-centos65 ~]# phpenv versions system *5.6.14
*が「system」から「5.6.14」に変わったので、切り替えできていますね。
このように、使いたいバージョンをインストールして切り替える
ということが簡単にできるようになります。
参考にさせてもらった記事
CentOS 6 の環境にPHP7をインストールしてApacheで動かすまで
切り替えまで少しやることは多いですが、一度インストールしてしまえば切り替えが容易にできるという非常に便利なツールです。私も、これを使ってPHP7のalphaやbeta,RC版などでちょこちょこっと触ってみたりもしています。
もし興味があれば、一度試してみてはいかがでしょうか。
おまけ:5.6.14の標準インストールでの対応モジュール
[PHP Modules] bcmath Core ctype curl date dom ereg exif fileinfo filter ftp gd hash iconv json libxml mbstring mcrypt mysql mysqli mysqlnd openssl pcntl pcre PDO pdo_mysql pdo_sqlite Phar posix readline Reflection session shmop SimpleXML soap sockets SPL sqlite3 standard sysvsem sysvshm tidy tokenizer xdebug xml xmlreader xmlrpc xmlwriter xsl Zend OPcache zip zlib [Zend Modules] Xdebug Zend OPcache
まつおか