Permalink
0757fe6 Jun 20, 2016
@zonuexe @t-cyrill @c9s @ujihisa @Tuurlijk @makotokw
528 lines (343 sloc) 16.1 KB

PHPBrew

他の言語でもお読み頂けます: English, Português - BR, 日本語.

Build Status Coverage Status

phpbrewは異なるバージョンのPHPを$HOMEディレクトリにビルドしてインストールすることができます。

phpbrewは環境変数の管理もします。なので、望む時にいつでもPHPのバージョンを切り替えたり、一時的にバージョンを変更して使ったりすることが可能になっています。

phpbrewがあなたのためにやってくれること:

  • configureスクリプトのオプションはバリアント(variant)へとシンプル化されているので、パスに悩まされることはもうありません!
  • PDO、mysql、sqlite、debugなど様々なバリアント(variant)を持つPHPをビルドしてくれます。
  • apacheのPHPモジュールをコンパイルし、異なるバージョンごとに分けて管理してくれます。
  • PHPをビルドしてホームディレクトリにインストールするので、root権限が必要ありません。
  • bash/zshといったシェルに統合されていて、バージョン間の切り替えがとても簡単です。
  • 自動的に機能を検知します。
  • PHP拡張モジュールを現在の環境にインストールして有効化することが簡単にできます。
  • システムワイドな環境に複数のPHPをインストールすることができます。
  • HomeBrewとMacPorts向けにパスの検知が最適化されています。

必要要件

始める前にRequirementをご覧ください。 PHPをビルドするための開発用パッケージをインストールする必要があります。

phpbrewのインストール

ダウンロードするだけ:

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

基本的な使い方

まず、お使いのシェル向けにbash scriptを初期化しておきます。

$ phpbrew init

そして、次の行を.bashrc または .zshrc ファイルに追加します:

$ source ~/.phpbrew/bashrc

phpbrewがライブラリを探す際の、お好みのデフォルトプレフィックスを準備しておくこともできます。 オプションは、macports, homebrew, debian, ubuntu またはカスタムのパスが使えます。

Homebrewユーザーの場合:

$ phpbrew lookup-prefix homebrew

Macportsユーザーの場合:

$ phpbrew lookup-prefix macports

既知のバージョンを一覧表示します:

$ phpbrew known
7.0: 7.0.3, 7.0.2, 7.0.1, 7.0.0 ...
5.6: 5.6.18, 5.6.17, 5.6.16, 5.6.15, 5.6.14, 5.6.13, 5.6.12, 5.6.11 ...
5.5: 5.5.32, 5.5.31, 5.5.30, 5.5.29, 5.5.28, 5.5.27, 5.5.26, 5.5.25 ...
5.4: 5.4.45, 5.4.44, 5.4.43, 5.4.42, 5.4.41, 5.4.40, 5.4.39, 5.4.38 ...
5.3: 5.3.29, 5.3.28 ...

古いバージョン(5.3以前)を一覧表示します:

$ phpbrew known --old

PHP のリリース情報を更新します:

$ phpbrew known --update

ビルド(build)とインストール

シンプルにdefaultバリアント(バリアントについては後述します)でPHPをビルドしてインストールします:

$ phpbrew install 5.4.0 +default

defaultバリアントセットをお薦めします。defaultバリアントセットは最もよく使われているバリアントを含んでいます。 最小インストールが必要であれば、defaultバリアントの指定を外してください。

-j または --jobs オプションを指定すると、並行ビルドを有効にすることができます。

以下に例を挙げます:

$ phpbrew install -j $(nproc) 5.4.0 +default

テストを実行する場合:

$ phpbrew install --test 5.4.0

debugメッセージを表示する場合:

$ phpbrew -d install --test 5.4.0

古いバージョン(5.3以下)をインストールする場合:

$ phpbrew install --old 5.2.13

ビルドをクリーンする

$ phpbrew clean

バリアント (variants)

PHPBrewはconfigureスクリプトのオプションをあなたの代わりに管理してくれます。 シンプルにバリアント名を指定してください。そうすると、PHPBrewがincludeパスとビルドオプションを検知してくれます。

PHPBrewはdefaultバリアントといくつかの「仮想バリアント」(Virtual variants)を提供します。 defaultバリアントは最もよく使われているバリアントを含んでいます。 仮想バリアントはいくつものバリアントのセットを定義するもので、ひとつの仮想バリアントを使用するだけで、一度に複数のバリアントを有効化します。

これらのバリアントに何が含まれているかを調べるには、variantsサブコマンドを実行して一覧を表示します:

$ phpbrew variants
Variants:
  all, apxs2, bcmath, bz2, calendar, cgi, cli, ctype, dba, debug, dom, embed,
  exif, fileinfo, filter, fpm, ftp, gcov, gd, gettext, hash, iconv, icu,
  imap, intl, ipc, ipv6, json, kerberos, mbregex, mbstring, mcrypt, mhash,
  mysql, openssl, pcntl, pcre, pdo, pgsql, phar, posix, readline, session,
  soap, sockets, sqlite, tidy, tokenizer, xml_all, xmlrpc, zip, zlib, gmp


Virtual variants:
  dbs:      sqlite, mysql, pgsql, pdo
  mb:       mbstring, mbregex
  neutral:
  default:  filter, dom, bcmath, ctype, mhash, fileinfo, pdo, posix, ipc,
            pcntl, bz2, zip, cli, json, mbstring, mbregex, calendar, sockets, readline,
            xml_all

Using variants to build PHP:

  phpbrew install 5.3.10 +default
  phpbrew install 5.3.10 +mysql +pdo
  phpbrew install 5.3.10 +mysql +pdo +apxs2
  phpbrew install 5.3.10 +mysql +pdo +apxs2=/usr/bin/apxs2

バリアントを有効化するには、+をバリアント名の前に付けます。 例えば、

+mysql

バリアントを無効化するには、-をバリアント名の前に付けます。 例えば、

-debug

以下に例を挙げます。defaultオプションとデータベースサポート(mysql, sqlite, postgresql)を有効にしてPHPをビルドしたい場合、以下を実行します:

$ phpbrew install 5.4.5 +default+dbs

さらに追加のオプションを指定してPHPをビルドすることもできます:

$ phpbrew install 5.3.10 +mysql+sqlite+cgi

$ phpbrew install 5.3.10 +mysql+debug+pgsql +apxs2

$ phpbrew install 5.3.10 +pdo +mysql +pgsql +apxs2=/usr/bin/apxs2

pgsql(PostgreSQL)拡張を有効にしてPHPをビルドするには:

$ phpbrew install 5.4.1 +pgsql+pdo

Mac OS XでPostgreSQLのディレクトリを指定してpgsql拡張をビルドするには:

$ phpbrew install 5.4.1 +pdo+pgsql=/opt/local/lib/postgresql91/bin

pgsqlパス指定はpg_configの位置で、pg_configは /opt/local/lib/postgresql91/bin で見つけられるでしょう。

ニュートラル(中立的)なコンパイルオプションでPHPをビルドするには、neutral 仮想バリアントを指定します。 neutral 仮想バリアントは --disable-all も含めて余計なコンパイルオプションを極力追加しません。 しかし、pearのインストールをサポートするために、いくつかのオプション(例えば --enable-libxml)は自動的に追加されます。

neutral variantでPHPをビルドするには:

$ phpbrew install 5.4.1 +neutral

そのほかの詳細はPHPBrew Cookbookをご覧ください。

追加オプション

configureスクリプトに追加の引数を渡すには、以下のようにしてください:

$ phpbrew install 5.3.10 +mysql +sqlite -- \
    --enable-ftp --apxs2=/opt/local/apache2/bin/apxs

使用(use)と切り替え(switch)

use (一時的なバージョンの切り替え):

$ phpbrew use 5.4.22

switch (デフォルトで使用するバージョンを切り替える):

$ phpbrew switch 5.4.18

phpbrewを使用するのをやめる:

$ phpbrew off

apacheモジュールを有効にしている場合、忘れずにその設定もコメントアウトするか削除するかしてください。

$ sudo vim /etc/httpd/conf/httpd.conf
# LoadModule php5_module        /usr/lib/httpd/modules/libphp5.3.21.so
# LoadModule php5_module        /usr/lib/httpd/modules/libphp5.3.20.so

インストールされたPHPを一覧表示する

$ phpbrew list

PHP拡張のインストーラー

PHP拡張を簡単にインストールすることもできます。PHPのソースコードと一緒に配布されているものやPECLで配布されているのどちらにも対応しています。

PHPのソースコード内にPHP拡張のディレクトリが見つかった場合、PHPBrewは自動的にPHPのソースディレクトリに移り、そのPHP拡張をインストールします。

PHPのソースコード内にPHP拡張が見つからなかった場合、PHPBrewはそのPHP拡張パッケージを PECL http://pecl.php.net から取得します。

また、PHPBrewはPHP拡張の設定を作成してインストールされたPHP拡張を有効化してくれます。なので、自分自身で設定ファイルを書いて有効化する必要はありません。 PHP拡張は次のディレクトリにあります:

~/.phpbrew/php/php-{version}/var/db

最も簡単なPHP拡張のインストール方法

安定度タグ(stability tag)を指定してインストールするには:

$ phpbrew ext install xdebug stable
$ phpbrew ext install xdebug latest
$ phpbrew ext install xdebug beta

バージョン名を指定してインストールするには:

$ phpbrew ext install xdebug 2.0.1

カスタムしたオプションを指定してインストールするには:

$ phpbrew ext install yaml -- --with-yaml=/opt/local

拡張モジュールを有効にします

PECL経由で拡張モジュールをインストールして、自分自身で有効化することも可能です:

pecl install mongo
phpbrew ext enable mongo

ext enableコマンドで{currentPHPbase}/var/db/{extension name}.iniに設定ファイルを作成して拡張を有効化することが可能です。

現在のPHPバージョン向けの php.ini を設定する

以下を実行します:

$ phpbrew config

お気に入りのエディタをEDITOR環境変数に指定しておくこともできます:

export EDITOR=vim
phpbrew config

PHPBrewの更新

最新のPHPBrewに更新するには、self-updateコマンドを実行するだけで済みます。 このコマンドでGitHub上のmasterブランチの最新バージョンをインストールすることができます:

$ phpbrew self-update

インストールされたPHPファイル

インストールされたPHPファイルは~/.phpbrew/phpに置かれます。例えば、php 5.4.20の場合は:

~/.phpbrew/php/5.4.20/bin/php

設定ファイルは以下の位置に置く必要があります:

~/.phpbrew/php/5.4.20/etc/php.ini

拡張モジュールの設定ファイルは以下の位置に置く必要があります:

~/.phpbrew/php/5.4.20/var/db
~/.phpbrew/php/5.4.20/var/db/xdebug.ini
~/.phpbrew/php/5.4.20/var/db/apc.ini
~/.phpbrew/php/5.4.20/var/db/memcache.ini
... etc

ディレクトリを切り替えるお手軽なコマンド

PHPのbuildディレクトリに移動します。

$ phpbrew build-dir

PHPのdistディレクトリに移動します。

$ phpbrew dist-dir

PHPのetcディレクトリに移動します。

$ phpbrew etc-dir

PHPのvarディレクトリに移動します。

$ phpbrew var-dir

PHPFPM

phpbrewはfpmを管理するための便利なサブコマンドも提供しています。 それらを使うには、phpをビルドする際に+fpmを有効化しておくことを覚えておいてください。

php-fpmを起動します:

$ phpbrew fpm start

php-fpmを停止します:

$ phpbrew fpm stop

php-fpmモジュールを表示します:

phpbrew fpm module

php-fpmの設定をテストします:

phpbrew fpm test

php-fpmの設定を編集します:

phpbrew fpm config

The installed php-fpm is located in ~/.phpbrew/php/php-*/sbin.

The correspond php-fpm.conf is lcoated in ~/.phpbrew/php/php-*/etc/php-fpm.conf.default, you may copy the default config file to the desired location. e.g.,

cp -v ~/.phpbrew/php/php-*/etc/php-fpm.conf.default
    ~/.phpbrew/php/php-*/etc/php-fpm.conf

php-fpm --php-ini {php config file} --fpm-config {fpm config file}

追加コンポーネントのインストール

composerのインストール

$ phpbrew app get composer

phpunitのインストール

phpbrew app get phpunit

プロンプトにバージョン情報を表示する

PHPのバージョン情報をシェルプロンプトに追加するには、"PHPBREW_SET_PROMPT=1"変数を使うことができます。

デフォルト値は "PHPBREW_SET_PROMPT=0" (無効)です。有効化するには、~/.bashrcファイルで ~/.phpbrew/bashrcをsourceする前に以下の行を追加します。

export PHPBREW_SET_PROMPT=1

プロンプトにバージョン情報を埋め込むには、phpbrew_current_php_versionシェル関数が利用可能です。 これは.phpbrew/bashrcで定義されていて、PS1変数にバージョン情報を設定することができます。

例えば、

PS1=" \$(phpbrew_current_php_version) \$ "

既知の問題点:

  • PHP-5.3以上のバージョンで、OS Xで64bit版intlのビルドが失敗する https://bugs.php.net/bug.php?id=48795

  • GD拡張を指定してPHPをビルドするには、libpng dirlibjpeg dirを指定する必要があります。 例えば、

    $ phpbrew install php-5.4.10 +default +mysql +intl +gettext +apxs2=/usr/bin/apxs2 \ -- --with-libdir=lib/x86_64-linux-gnu \ --with-gd=shared \ --enable-gd-natf \ --with-jpeg-dir=/usr \ --with-png-dir=/usr

トラブルシューティング

TroubleShootingをご覧ください。

FAQ

Q: 同じバージョンで異なるコンパイルオプションを指定したPHPをインストールすることはできますか?

A: 今のところ、php5.x.xをインストールして/Users/phpbrew/.phpbrew/php/php-5.x.xフォルダを別の名前にリネームすることで実現可能です。例えば、php-5.x.x-superにリネームして新しくphp-5.3.3をインストールする、といったように。

貢献するには

Contributionをご覧ください。

ドキュメンテーション

Wikiをご覧ください。

Author

  • Yo-An Lin (c9s)

ライセンス

LICENSEをご覧ください。