途中で気づいたけど
y_utiさんの記事にめっちゃ詳しく書いてあったから、皆こっちを読むといいよ!
php-build をカスタマイズして使う - y_uti のブログ
ここから元の文章↓
php-buildは単独でインストールすることもできる。
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を有効にしてビルドする。