PHPBrewでPHPとOpenSSLをアップデートしてみる


自分のMac環境にてPHPのOpenSSLライブラリを1.0.1i以上にバージョンアップする必要があったため、PHPBrewを利用してアップデートを行いました。

OpenSSLをアップデートするにはどちらにせよPHPを再コンパイルする必要があるのでこの方法が簡単だと思います。

事前準備

Homebrew

OpenSSLをアップデートする際にHomebrewを使用します。
以下のコマンドでインストールしましょう。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install”

OpenSSLのアップデート

OpenSSLのバージョンを調べて最新版へアップグレードします。

OpenSSLのパスを確認

$ which openssl

現在のOpenSSLのバージョンを確認

$ openssl version

OpenSSLをアップグレード

$ brew upgrade openssl

アップデートしたOpenSSLにリンク

$ brew link openssl --force

OpenSSLのバージョン確認

$ openssl version

ここまででMac環境のOpenSSLは最新のものになっていると思います。

PHPのインストール

PHPビルドに必要なパッケージ

PHPをビルドするするために必要なパッケージをインストールします。

$ brew install automake autoconf curl pcre re2c mhash libtool icu4c intltool gettext jpeg libxml2 mcrypt openssl gmp libevent

インストールしたいくつかのパッケージをリンクしておきます。

$ brew link curl --force 
$ brew link icu4c --force 
$ brew link libxml2 --force 
$ brew link openssl --force

PHPBrewをインストール

$ curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
$ chmod +x phpbrew
$ mv phpbrew /usr/local/bin/phpbrew

PHPBrewを初期化

$ phpbrew init

次の行を.bashrc または .zshrc ファイルに追加し、ターミナルを再起動します。

source $HOME/.phpbrew/bashrc

PHPをインストール

インストールできるバージョンを一覧表示します。

$ phpbrew known

インストールしたいバージョンを指定してインストールします。

$ phpbrew install 5.6.19 +default

+default は variants という記法で、configure オプションを指定するのに使います。有効な variants は phpbrew list --variants コマンドで確認できます。

インストールエラーが出た場合

エラーが出た場合、エラーメッセージがでます。
ほとんどは必要なパッケージが足りてなかったりするエラーなので、上のパッケージインストールコマンドを参考にインストールした後、再度PHPのインストールを開始してください。brew linkも同時に行ってください。

PHPのバージョンを切り替える

PHPのインストールが完了したらそのバージョンへ切り替えなければいけません。

$ phpbrew switch 5.6.19

ここまできたらPHPをビルドした際に新しいOpenSSLを利用しているためPHPの環境でも最新バージョンが適応されていると思います。

$ php -i | grep OpenSSL
OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 1.0.2g 1 Mar 2016
OpenSSL Header Version => OpenSSL 1.0.2g 1 Mar 2016
OpenSSL support => enabled

以上でPHPのインストール及びOpenSSLのアップデートは完了です。

参考記事

http://www.karakaram.com/mac-install-phpbrew
http://blog.yukarien.com/tech/openssl-versionup/