LoginSignup
7
7

More than 5 years have passed since last update.

Cloud9にphpenv(PHPのバージョン管理)を導入できるか試してみた

Posted at

(2015/4/1現在のCloud9にて作業)

Cloud9は、Rubyであればデフォルトでrvmが入っているのでバージョン管理はそれでOK、ただ、PHPでもバージョン管理が出来ないかを試してみた。

Ubuntu に phpenv を入れて複数バージョンのPHP管理しようとしたCentOSにrbenvとphpenvをシステムワイドにインストール の記事を参考に挑戦。

結果、出来ましたが、穏やかでないこともしているので 自己責任 でお願いします。

phpenvのインストール

ワークスペースの作成では、種類は「custom」にして作成。

最初に、インストール用のスクリプトファイルをダウンロードする。

console
$ cd
$ mkdir .installer-phpenv
$ cd .installer-phpenv/
$ wget https://raw.githubusercontent.com/CHH/phpenv/master/bin/phpenv-install.sh

そのスクリプトファイルを実行する。

console
$ chmod +x phpenv-install.sh
$ ./phpenv-install.sh

Installing phpenv in /home/ubuntu/.phpenv
Cloning into '/home/ubuntu/.phpenv'...
remote: Counting objects: 2052, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 2052 (delta 0), reused 0 (delta 0), pack-reused 2046
Receiving objects: 100% (2052/2052), 340.61 KiB | 255.00 KiB/s, done.
Resolving deltas: 100% (1272/1272), done.
Checking connectivity... done.
Success.
    ;;
*)
    ;;
esac

export PATH="/home/ubuntu/.phpenv/bin:$PATH"
eval "$(phpenv init -)"

Add above line at the end of your ~/.bashrc and restart your shell to use phpenv.

~/.bashrcexportevalの設定を追加するよう指示が出るので、viで開いて2行追加する。で、再読み込み。

console
$ vi ~/.bashrc
$ source ~/.bashrc

php-buildのインストール

phpenvを使うことが前提なので、phpenvのプラグインとして導入する。

console
$ git clone git://github.com/CHH/php-build.git $HOME/.phpenv/plugins/php-build

phpenv installを実行し、インストールできるPHPのバージョンが一覧表示されればOK。

console
$ phpenv install

usage: phpenv install VERSION

Available versions:
 5.2.17
 5.3.10
 5.3.11
 5.3.12
  .
  .
  .
 5.6.5
 5.6.6
 5.6.7
 5.6snapshot
 master

bison 2.7のインストール(と3.0のアンインストール)

PHPのどれかをインストールするのは、まだ先。引き続き、必要な作業をしていく。

どのバージョンのPHPを入れるにしてもbisonの特定のバージョンが必要になる。Cloud9ではデフォルトで3.0版のbisonがインストールされているが、これではOUT。

びっくりすることにCloud9ではapt-getが利用できるので、3.0版のbisonをアンインストールし、2.7版のbisonをソースコードからインストールする。(元々インストールされているものをアンインストールするので、 自己責任 でお願いします。)

bison 2.7のダウンロード

console
$ mkdir .source-bison27
$ cd .source-bison27/
$ wget http://ftp.gnu.org/gnu/bison/bison-2.7.tar.gz
$ tar xvzf bison-2.7.tar.gz
$ cd bison-2.7/
$ ./configure
$ make

bison 3.0のアンインストール

console
$ sudo apt-get remove bison

bison 2.7のインストール

console
$ sudo make install

依存パッケージのインストール

他にも必要なパッケージがあるので、インストールしていく。

自分が行なったときにインストールしたパッケージは、下記のとおり。する必要のなかったものもあるかも…。(あと、libcurl関連は、ひとつずつインストールしないと上手くいかなかった。)

console
$ sudo apt-get update
$ sudo apt-get install libcurl3
$ sudo apt-get install libcurl4-gnutls-dev
$ sudo apt-get install libcurl4-nss-dev
$ sudo apt-get install libcurl4-openssl-dev
$ sudo apt-get install libmcrypt4 libmcrypt-dev libtidy-0.99-0 libtidy-dev libxslt1.1 libxslt1-dev apache2-dev

apxs2の設定

PHPのインストールの際にlibphp5.soというApache用のファイルを作成できるように、設定を追加する。~/.phpenv/plugins/php-build/share/php-build/default_configure_optionsをviで開き、次の1行の設定を、ファイルの一番下に追加する。

default_configure_options
--with-apxs2=/usr/bin/apxs2

パーミッションの変更

以下のディレクトリのパーミッションを変更しないとPHPのインストール時にコケるので、chmodを実行する。また、デフォルトのlibphp5.soを退避させておく。

console
$ sudo chmod oga+rw /usr/lib/apache2/modules
$ mv /usr/lib/apache2/modules/libphp5.so ~/.phpenv/versions/
$ sudo chmod oga+rw /etc/apache2/mods-available

PHPのインストールを実行する

ここまでやって、ようやくPHPをインストールできる。リストの中からPHP5.6.7をインストールしてみる。

なお、フリープランだと恐ろしく時間がかかるので、覚悟する。(メモリが不足しているという警告が何度も出るが、それのせいでインストールがコケることは無かった。)

console
$ phpenv install 5.6.7

[Info]: Loaded extension plugin
[Info]: Loaded apc Plugin.
[Info]: Loaded composer Plugin.
[Info]: Loaded pyrus Plugin.
[Info]: Loaded uprofiler Plugin.
[Info]: Loaded xdebug Plugin.
[Info]: Loaded xhprof Plugin.
[Info]: php.ini-production gets used as php.ini
[Info]: Building 5.6.7 into /home/ubuntu/.phpenv/versions/5.6.7
[Skipping]: Already downloaded and extracted http://php.net/distributions/php-5.6.7.tar.bz2
[Preparing]: /tmp/php-build/source/5.6.7
[Compiling]: /tmp/php-build/source/5.6.7
[Pyrus]: Downloading from http://pear2.php.net/pyrus.phar
[Pyrus]: Installing executable in /home/ubuntu/.phpenv/versions/5.6.7/bin/pyrus
[xdebug]: Installing version 2.3.2
[xdebug]: Compiling xdebug in /tmp/php-build/source/xdebug-2.3.2
[xdebug]: Installing xdebug configuration in /home/ubuntu/.phpenv/versions/5.6.7/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.7.20150401094243.log
[Success]: Built 5.6.7 successfully.

インストールしたPHPを使えるようにする

console
$ phpenv global 5.6.7
$ phpenv rehash

これでphp -vを実行すれば、5.6.7と出る。また、適当なPHPファイルをworkspaceの中に作成して、phpinfo()でも書いておいて、Apacheを起動すれば、問題なくPHPが動いていることが確認できるはず。

終わりに

結構大変で力尽きたので、当記事は、ここまでで。ここまで問題なければ、DBとの連携なども上手くいく、はず。試していないけど…。それは、また後で。

あと、ここまで使い倒すなら、有料プランへの乗り換えも考えた方が良いのかも。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7