phpbrew是一个构建、安装多版本PHP到用户根目录的工具。
phpbrew能做什么?
配置选项简化为「Variants」,无需担心路径问题。支持使用PDO,mysql,sqlite,debug等不同「Variants」编译PHP。针对不同版本,分别编译apachephp模块,互不冲突。无需root权限将PHP安装到用户根目录。集成至bash/zshshell等,易于切换版本。支持自动特性检测。易于安装、启用PHP扩展。支持在系统环境下安装多个PHP。路径检测针对HomeBrew以及MacPorts进行了优化。安装需求在开始之前,请先查看:Requirement(英文)。确保已安装依赖包的开发版本用于编译PHP。
安装curl-L-Ohttps://github.com/phpbrew/phpbrew/raw/master/phpbrewchmod+xphpbrew#Movephpbrewtosomewherecanbefoundbyyour$PATHsudomvphpbrew/usr/local/bin/phpbrew快速入门急不可待?请直接查看:QuickStart(英文)。
开始使用接下来,我们假定你有充足的时间来学习,这将会是一个循序渐进的教程——教你如何配置phpbrew。
初始设置首先,初始化BashShell脚本:
phpbrewinit接着在 .bashrc 或 .zshrc 文件增加如下行:
[[-e~/.phpbrew/bashrc]]&&source~/.phpbrew/bashrc对于Fishshell用户,在 ~/.config/fish/config.fish 文件增加如下行:
source~/.phpbrew/phpbrew.fish若需要在系统全局(非用户目录)使用phpbrew,请设置共享的phpbrew根目录,例如:
mkdir-p/opt/phpbrewphpbrewinit--root=/opt/phpbrew库路径设置其次,请设置用于查找库文件的默认前缀,可选值有 macports,homebrew,debian,ubuntu 或是自定义路径。
对于Homebrew用户:
phpbrewlookup-prefixhomebrew对于Macports用户:
phpbrewlookup-prefixmacports基础用法列出已知PHP版本:
phpbrewknown7.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...列出更多次要版本:
$phpbrewknown--more刷新PHP发布信息:
$phpbrewupdate刷新旧版本(低于5.4):
请注意:我们不保证能够正确编译PHP官方停止维护的版本,请不要提交关于编译旧版本的Issus,此类Issue将不会修复。
$phpbrewupdate--old列出已知的旧版本(低于5.4):
$phpbrewknown--old编译属于你的PHP使用默认参数编译安装PHP非常简单:
$phpbrewinstall5.4.0+default这里我们推荐使用已包含绝大多数公共参数的 default(默认)参数集合。如果你需要「最小安装」,删掉default执行即可。
你可以使用-j或--jobs选项启用并行编译,例如:
$phpbrewinstall-j$(nproc)5.4.0+default编译完成后执行测试用例:
$phpbrewinstall--test5.4.0测试环境,且包含调试信息:
$phpbrew-dinstall--test5.4.0安装旧版本(低于5.3):
$phpbrewinstall--old5.2.13安装给定主要版本的最新次要版本:
$phpbrewinstall5.6安装预览版本:
$phpbrewinstall7.2.0alpha1$phpbrewinstall7.2.0beta2$phpbrewinstall7.2.0RC3通过指定的GitHubtag或branch安装:
$phpbrewinstallgithub:php/php-src@PHP-7.2asphp-7.2.0-dev安装下一个(非稳定)版本:
$phpbrewinstallnextasphp-7.3.0-dev清除编译目录$phpbrewcleanphp-5.4.0VariantsPHPBrew已经将配置选项整理、合并为「Variants」,你只需简单地指定某个Variant即可,phpbrew会自动在配置过程中检测引用目录、编译选项等。
PHPBrew提供默认的Variant,以及一些虚拟Variants。「DefaultVariant」包含绝大多数公共Variants;「VirtualVariants」可包含多个Variants,使用一个虚拟Variant即可一次性启用多个Variants。
只需执行variants子命令,即可列出它们:
$phpbrewvariantsVariants:all,apxs2,bcmath,bz2,calendar,cgi,cli,ctype,curl,dba,debug,dom,dtrace,editline,embed,exif,fileinfo,filter,fpm,ftp,gcov,gd,gettext,gmp,hash,iconv,icu,imap,inifile,inline,intl,ipc,ipv6,json,kerberos,libgcc,mbregex,mbstring,mcrypt,mhash,mysql,opcache,openssl,pcntl,pcre,pdo,pgsql,phar,phpdbg,posix,readline,session,soap,sockets,sqlite,static,tidy,tokenizer,wddx,xml,xml_all,xmlrpc,zip,zlib,ztsVirtualvariants:dbs:sqlite,mysql,pgsql,pdomb:mbstring,mbregexneutral:small:bz2,cli,dom,filter,ipc,json,mbregex,mbstring,pcre,phar,posix,readline,xml,curl,openssldefault:bcmath,bz2,calendar,cli,ctype,dom,fileinfo,filter,ipc,json,mbregex,mbstring,mhash,mcrypt,pcntl,pcre,pdo,phar,posix,readline,sockets,tokenizer,xml,curl,openssl,zipeverything:dba,ipv6,dom,calendar,wddx,static,inifile,inline,cli,ftp,filter,gcov,zts,json,hash,exif,mbstring,mbregex,libgcc,pdo,posix,embed,sockets,debug,phpdbg,zip,bcmath,fileinfo,ctype,cgi,soap,pcntl,phar,session,tokenizer,opcache,imap,tidy,kerberos,xmlrpc,fpm,dtrace,pcre,mhash,mcrypt,zlib,curl,readline,editline,gd,intl,icu,openssl,mysql,sqlite,pgsql,xml,xml_all,gettext,iconv,bz2,ipc,gmpUsingvariantstobuildPHP:phpbrewinstallphp-5.3.10+defaultphpbrewinstallphp-5.3.10+mysql+pdophpbrewinstallphp-5.3.10+mysql+pdo+apxs2phpbrewinstallphp-5.3.10+mysql+pdo+apxs2=/usr/bin/apxs2在Variant前添加+前缀,代表启用此Variant,例如:
+mysql在Variant前添加-前缀,代表禁用此Variant,例如:
-mysql举个例子,假设你使用默认Variant,并且需要启用数据库支持(mysql,sqlite,postgresql)编译PHP,只需执行:
$phpbrewinstall5.4.5+default+dbs也可以:
$phpbrewinstall5.3.10+mysql+sqlite+cgi$phpbrewinstall5.3.10+mysql+debug+pgsql+apxs2$phpbrewinstall5.3.10+pdo+mysql+pgsql+apxs2=/usr/bin/apxs2将pgsql(PostgreSQL)扩展编译进PHP:
$phpbrewinstall5.4.1+pgsql+pdo若你的Mac上已经安装postgresql,也可以指定特定目录编译pgsql扩展:
$phpbrewinstall5.4.1+pdo+pgsql=/opt/local/lib/postgresql91/binpgsql的路径即为pg_config所在目录,你可以在/opt/local/lib/postgresql91/bin找到它。
另外,你可以使用名为neutral的Variant来纯净编译PHP:
$phpbrewinstall5.4.1+neutralneutral意味着phpbrew不会增加包括--disable-all在内的任何额外编译参数,但部分用于安装pear的参数(例如--enable-libxml)依旧会被添加。
更多细节,请移步:PHPBrewCookbook(英文)。
拓展配置选项如果想要传递更多拓展配置变量,你可以这么做:
$phpbrewinstall5.3.10+mysql+sqlite--\--enable-ftp--apxs2=/opt/local/apache2/bin/apxs切换PHP版本临时切换PHP版本:
$phpbrewuse5.4.22切换默认PHP版本:
$phpbrewswitch5.4.18关闭phpbrew:
$phpbrewoff若需要启用ApachePHP模块,请注释或移除以下设置项:
$sudovim/etc/httpd/conf/httpd.conf#LoadModulephp5_module/usr/lib/httpd/modules/libphp5.3.21.so#LoadModulephp5_module/usr/lib/httpd/modules/libphp5.3.20.so扩展安装器请查看:ExtensionInstaller(英文)。
配置php.ini配置当前PHP版本的php.ini文件,只需执行如下命令即可:
$phpbrewconfig如需切换编辑器,可执行如下命令指定EDITOR环境变量:
exportEDITOR=vimphpbrewconfig升级phpbrew执行 self-update 即可从GitHub的 master 分支安装phpbrew最新版本。
$phpbrewself-update已安装的PHP列出已安装的PHP:
$phpbrewlist你可以在 ~/.phpbrew/php 目录找到已安装的PHP。例如,5.4.20版本位于:
~/.phpbrew/php/5.4.20/bin/php你可以手动修改其php.ini:
~/.phpbrew/php/5.4.20/etc/php.ini而PHP扩展的配置文件位于:
~/.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等等...一键切换目录切换至PHP编译目录:
$phpbrewbuild-dir切换至PHPdist目录:
$phpbrewdist-dir切换至PHPetc目录:
$phpbrewetc-dir切换至PHPvar目录:
$phpbrewvar-dirPHPFPMphpbrew内置一些有用的命令用于管理php-fpm。使用它们之前,请确认在PHP编译时启用了 +fpm。
启动php-fpm:
$phpbrewfpmstart停止php-fpm:
$phpbrewfpmstop列出php-fpm模块:
phpbrewfpmmodule测试php-fpm配置:
phpbrewfpmtest编辑php-fpm配置:
phpbrewfpmconfig已安装的 php-fpm 位于 ~/.phpbrew/php/php-*/sbin 目录。
对应的 php-fpm.conf 文件位于 ~/.phpbrew/php/php-*/etc/php-fpm.conf.default 目录。
你可以把默认配置复制到自定义路径再使用,例如:
cp-v~/.phpbrew/php/php-*/etc/php-fpm.conf.default~/.phpbrew/php/php-*/etc/php-fpm.confphp-fpm--php-ini{phpconfigfile}--fpm-config{fpmconfigfile}安装拓展应用phpbrew内置了用来获取部分PHP应用的app命令。
安装Composer$phpbrewappgetcomposer安装PHPUnitphpbrewappgetphpunit启用版本信息Prompt使用"PHPBREW_SET_PROMPT=1"变量可将PHP版本信息加入ShellPrompt。
此变量默认值为"PHPBREW_SET_PROMPT=0"(即禁用),将如下行加入~/.bashrc文件,确保其在source~/.phpbrew/bashrc之前,即可启用此功能:
exportPHPBREW_SET_PROMPT=1使用.phpbrew/bashrc内定义的phpbrew_current_php_version函数,可将版本信息嵌入到ShellPrompt。你可以将版本信息设置到 PS1 变量内,例如:
PS1="\$(phpbrew_current_php_version)\$"已知问题对于PHP-5.3+版本,"Buildingintl64-bitfailsonOSX" https://bugs.php.net/bug.php?id=48795
将GD扩展编译进PHP,你需要指定libpng目录、libjpeg目录,例如:
$phpbrewinstallphp-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(英文)。
常见问答Q:如何使用不同的参数编译相同PHP版本?
A:截至目前,你可以安装php-5.x.x并重命名其目录/Users/phpbrew/.phpbrew/php/php-5.x.x(例如:php-5.x.x-super),并安装另一个php5.x.x。
评论