LoginSignup
7
5

More than 3 years have passed since last update.

phpenv/php-build で拡張がすこし入れやすくなりました

Last updated at Posted at 2019-10-25

PHP拡張を追加でいれるのは少々めんどくさかった

phpenv および php-build で、PHP拡張を同時に入れようとすると、今までは次のような手順をふまないといけませんでした。

  1. php-build/share/php-build/extension/definition に行を追加してビルド方法を指定する
  2. 環境変数 PHP_BUILD_INSTALL_EXTENSION で拡張名とバージョンを指定する

php-build/share/php-build/extension/definition はこんなファイルです。

"name","url-dist","url_source","source_cwd","configure_args","extension_type","after_install"
"apc","http://pecl.php.net/get/APC-$version.tgz","git@git.php.net:/pecl/caching/apc.git",,"--enable-apc","extension",
"apcu","http://pecl.php.net/get/apcu-$version.tgz","https://github.com/krakjoe/apcu.git",,,"extension",
"igbinary","http://pecl.php.net/get/igbinary-$version.tgz","https://github.com/igbinary/igbinary.git",,,"extension",
"imagick","http://pecl.php.net/get/imagick-$version.tgz","https://github.com/mkoppanen/imagick.git",,,"extension",
"memcache","http://pecl.php.net/get/memcache-$version.tgz","git@git.php.net:/pecl/caching/memcache.git",,,"extension",
"memcached","http://pecl.php.net/get/memcached-$version.tgz","https://github.com/php-memcached-dev/php-memcached.git",,"--disable-memcached-sasl","extension",
"uprofiler",,"https://github.com/FriendsOfPHP/uprofiler.git","extension",,"extension","uprofiler_after_install"
"xcache","http://xcache.lighttpd.net/pub/Releases/$version/xcache-$version.tar.gz",,,"--enable-xcache","extension",
"xdebug","http://xdebug.org/files/xdebug-$version.tgz","git://github.com/xdebug/xdebug.git",,"--enable-xdebug","zend_extension","xdebug_after_install"
"xhprof","http://pecl.php.net/get/xhprof-$version.tgz","git://github.com/facebook/xhprof.git",,,"extension","xhprof_after_install"
"zendopcache","http://pecl.php.net/get/zendopcache-$version.tgz","https://github.com/zendtech/ZendOptimizerPlus.git",,"--enable-opcache","zend_extension","zendopcache_after_install"

phpbrew だとバリアントを指定すれば拡張を簡単に追加できるのに比べると少々めんどくさかったんですよね。

柔軟性があがる pull-req が取り込まれた!

この状況が今回取り込まれた pull-req で少し柔軟性が上がりました。

これ、修正内容を見ただけではなにが良くなったか分かりづらいですが、次のようなことが可能になりました。

  • PECL( https://pecl.php.net/ )で普通に配布されている拡張であれば、php-build/share/php-build/extension/definition に行を指定しなくても、環境変数 PHP_BUILD_INSTALL_EXTENSION に指定すれば良くなった

例えば、PECLで配布されているyaml拡張とredis拡張を同時にbuildしたければ次のように環境変数を指定すれば良くなります。

export PHP_BUILD_INSTALL_EXTENSION="yaml=2.0.4 redis=5.0.2"

指定方法は、拡張名とバージョンを = でつなぎ、複数指定する場合は空白で区切っていけばOKです。

この環境変数が設定されている状態で、phpenvやphp-buildでインストールすれば、ついでに拡張がはいるということになります。

これでPECLで配布されている標準的な拡張であれば同時にビルドしやすくなる(もちろんそのためにいろいろ xxx-dev みたいなものを入れとかないといけないですが)ので、だいぶ楽になりますね。

7
5
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
5