LoginSignup
10
8

More than 5 years have passed since last update.

php-buildを単独で使う

Last updated at Posted at 2016-05-01

途中で気づいたけど

y_utiさんの記事にめっちゃ詳しく書いてあったから、皆こっちを読むといいよ!

php-build をカスタマイズして使う - y_uti のブログ

ここから元の文章↓

php-buildは単独でインストールすることもできる。

phpenvやphpbrewの雑な比較 - Qiita

phpenvとrbenvの競合で消耗した記憶から、phpenvは入れなくてもいいんじゃないかって気になった。というわけで単独でセットアップする方法についてまとめる。

インストール

php-buildはPHPの新しいバージョンがリリースされる度にアップデートが走る。そのためgit pullを頻繁にできたほうが良い。
私はhomeをpeco+ghqの標準的なディレクトリ構成にしているので、素直にその構成に従ってgit cloneする。

$ ghq get git://github.com/php-build/php-build.git

あとはsrc/github.com/php-build/php-build/bin/に対して$PATHを通せばいいが、$PATHが汚れるのは嫌なので、元々通してある~/binにシンボリックリンクを作っておく。

$ ln -s src/github.com/php-build/php-build/bin/php-build ~/bin/php-build

これで動くはず。

$ php-build
usage: php-build [options] <definition> <prefix>

  <definition>       What release should be used, as well as release-specific
                     configuration. This is either the name of a builtin
                     definition file (as listed with --definitions) or a path
                     to the definition file.
  <prefix>           All built executables, configurations and libraries are
                     placed in this directory. It's created if it doesn't
                     exist.

  --definitions      Lists all available definitions and exit
  -h|--help          Display this help and exit
  -i|--ini <env>     php.ini to use. If <env> is a file then this file is
                     used, otherwise php.ini-<env> from the source
                     distribution is used. Defaults to "production".
  -v|--version       Display version information and exit

PHPの置き場所を作る

$ mkdir ~/.php

ビルド

php-buildでビルドするにあたっては、いくつか依存ライブラリを予めインストールしておく必要がある。環境によってまちまちなので、各自調べてください。brew install openssl && brew link openssl --forceとかは必要かも。

php-buildの対応しているPHPバージョンは--definitionsで出力できる。自然順じゃなくて読みにくいのでPHPでソートするとよい。

$ php-build --definitions | php -r '$lines=file("php://stdin");natsort($lines);echo implode("",$lines);'

適当に欲しいPHPを見繕ったら、おもむろにビルド。

$ php-build -i development {,~/.php/}7.0.6

これで~/.php/7.0.6/bin/にphp-7.0.6が入る。

もっと複雑なビルドオプション

環境変数を使うともう少し色々設定できるらしい。

PHP_BUILD_DEFINITION_PATH

PHP_BUILD_DEFINITION_PATH=path/to/def など

definitionsの置いてあるパスを置き換える。自分の書いたdefinitionsに従ってインストールしたい時などに使う。

PHP_BUILD_KEEP_OBJECT_FILES

PHP_BUILD_KEEP_OBJECT_FILES=on など

make cleanしなくなる。
連続して色々なオプションを試したいときはいいかも。

PHP_BUILD_EXTRA_MAKE_ARGUMENTS

PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j2

make時のオプション。通常は何も指定しなくて良いが、-j2など並列オプションを使えばビルド時間を短縮できる。

PHP_BUILD_INSTALL_EXTENSION

PHP_BUILD_INSTALL_EXTENSION="apcu=@" など

追加でインストールするextensionを指定する。スペース区切りで複数指定できる。何でもインストールできるわけではなく、share/php-build/extension/definitionに記載してあるものだけが有効。

PHP_BUILD_CONFIGURE_OPTS

PHP_BUILD_CONFIGURE_OPTS="--enable-re2c-cgoto --enable-phpdbg"

./configureスクリプトに渡すオプションを追加することができる。何も指定しなければphp-buildの標準仕様に従ってオプションが決定される。

PHP_BUILD_ZTS_ENABLE

PHP_BUILD_ZTS_ENABLE=on

ZTSを有効にしてビルドする。

10
8
1

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
10
8