在 phpenv/php-build 中,增加了一些方便安装扩展的功能
安装PHP扩展有点繁琐。
使用 phpenv 和 php-build ,如果要同时安装 PHP 扩展,以前必须按照以下步骤进行操作。
-
- 在php-build/share/php-build/extension/definition文件中添加行来指定构建方法
- 使用环境变量PHP_BUILD_INSTALL_EXTENSION来指定扩展名和版本。
php-build/share/php-build/extension/definition 是一个这样的文件。
- https://github.com/php-build/php-build/blob/master/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 request!
在这个情况下,这次的拉取请求变得稍微灵活了一些。
- https://github.com/php-build/php-build/pull/586
这个修正后的版本看起来可能不容易理解改进了什么,但实际上它带来了以下的可能性。
- PECL( https://pecl.php.net/ )で普通に配布されている拡張であれば、php-build/share/php-build/extension/definition に行を指定しなくても、環境変数 PHP_BUILD_INSTALL_EXTENSION に指定すれば良くなった
如果想要同时构建PECL提供的yaml扩展和redis扩展,只需按照以下方式指定环境变量即可。
export PHP_BUILD_INSTALL_EXTENSION="yaml=2.0.4 redis=5.0.2"
指定的方法是将扩展名和版本号用=连接起来,如果需要多个指定,则用空格分隔即可。
在该环境变量被设置的情况下,通过phpenv或php-build进行安装,同时还会安装相关的扩展。
如果这是一个在PECL上分发的标准扩展,那么同时构建将变得更加容易(当然需要装一些类似于xxx-dev的东西),这样就会更加轻松。