はじめに
Cloud9のPHPのテンプレートだと、現状ではPHPが5.51 になっているので、5.6にバージョンアップする方法をご紹介します。
単純にPHPを5.6に置き換える方法と、PHPBrewを利用して既存のバージョンと5.6を共存させる方法の2種類の方法で試してみました。
ただ、PHPBrewを利用する方法については、PHPBrewを使いこなせていないこともあって実際には何かしらの不具合2 があるかもしれません。その点を予めご理解いただいた上で参考にしてください。
それから、元々インフラ周りは得意ではないので、説明に不備があるかもしれませんがご容赦ください。
バージョンアップ手順
単純に置き換える方法
apache2のPHP5.6用モジュールをインストール
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install libapache2-mod-php5.6
この時点で、おそらくPHP5.6はインストールされます。
apache2の設定を5.6用に変更
実際にApacheを起動した際に、ApacheがPHP5.6のモジュールを参照するように設定を変更します。
$ sudo a2dismod php5
$ sudo a2enmod php5.6
Ubuntuのディストリビューションをアップグレード
$ sudo add-apt-repository ppa:ondrej/php5-compat
$ sudo apt-get update
$ sudo apt-get dist-upgrade
これで依存関係が解決されるはずです。
以上で既存のPHPを5.6にバージョンアップする方法は完了です。
PHPBrewを利用する方法
GitHub上のREADMEファイル に記載されている内容をそのまま実行していくだけです。
事前準備
$ sudo apt-get update
$ sudo apt-get build-dep php5
$ sudo apt-get install -y php5 php5-dev php-pear autoconf automake curl libcurl3-openssl-dev build-essential libxslt1-dev re2c libxml2 libxml2-dev php5-cli bison libbz2-dev libreadline-dev
$ sudo apt-get install -y libfreetype6 libfreetype6-dev libpng12-0 libpng12-dev libjpeg-dev libjpeg8-dev libjpeg8 libgd-dev libgd3 libxpm4 libltdl7 libltdl-dev
$ sudo apt-get install -y libssl-dev openssl
$ sudo apt-get install -y gettext libgettextpo-dev libgettextpo0
$ sudo apt-get install -y libicu-dev
$ sudo apt-get install -y libmhash-dev libmhash2
$ sudo apt-get install -y libmcrypt-dev libmcrypt4
PHPBrewをインストール
$ curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
$ chmod +x phpbrew
$ sudo mv phpbrew /usr/local/bin/
初期化
$ phpbrew init
.bashrc の拡張
ホームディレクトリに設置されている .bashrc(~/.bashrc) に以下の内容を追記します。
[[ -e ~/.phpbrew/bashrc ]] && . ~/.phpbrew/bashrc
ファイルの編集が終わったら、. ~/.bashrc
で再読み込みをするか、ターミナルを起動し直してください。
デフォルトプレフィックスをUbuntu用に設定
$ phpbrew lookup-prefix ubuntu
Apacheの関連ディレクトリのパーミッションを変更
$ sudo chmod -R oga+rw /usr/lib/apache2/modules
$ sudo chmod -R oga+rw /etc/apache2
PHPのインストール
PHPのconfigureオプションは、variantというPHPBrew独自のフォーマットで指定することになっています。
$ phpbrew -d install 5.6 +default+debug+mysql+pdo+apxs2
開発者個々に変わってくる部分はここになるのかなと思います。
ご自身の要件に合わせてカスタマイズしたい場合は、README を参考にしてください。variantの説明が記載されています。
インストールしたPHPのリストを確認する
$ phpbrew list
「php-5.~」 の形式で表示されるはずなので、インストールされたバージョンを確認しておきましょう。
切り替え
※"x"の部分にはインストールしたPHPのバージョンを指定してください。
$ phpbrew switch 5.6.x
これでphp -v
をして切り替えたバージョンが表示されれば成功です。
ちなみに、デフォルトのPHPに戻したい場合は phpbrew switch-off
すれば元に戻ります。
以上でPHPBrewを利用したバージョンアップ方法は完了です。
こちらの方法の場合、古いバージョンのPHPもインストールして同一環境上で複数のバージョンでの挙動を確認する、といったことも可能になるかと思います。
トラブルシューティング
インストールでエラーが出たので再度インストールする。。。その前に
インストール作業を再開する前に、~/.phpbrew
を削除して以下のコマンドを実行してください。
$ phpbrew self-update
$ phpbrew init
$ phpbrew lookup-prefix ubuntu
これをしないと、インストール対象のディストリビューションダウンロード実行時にエラーになってしまって、何度インストールを実行しても先に進めなくなる場合があると思います。