PHPBrew 安装多版本 PHP 到用户根目录的工具开源项目

我要开发同款
匿名用户2019年05月14日
81阅读

技术信息

开源地址
https://gitee.com/mirrors/PHPBrew
授权协议
MIT

作品详情

phpbrew是一个构建、安装多版本PHP到用户根目录的工具。

phpbrew能做什么?

配置选项简化为「Variats」,无需担心路径问题。支持使用PDO,mysql,sqlite,debug等不同「Variats」编译PHP。针对不同版本,分别编译apachephp模块,互不冲突。无需root权限将PHP安装到用户根目录。集成至bash/zshshell等,易于切换版本。支持自动特性检测。易于安装、启用PHP扩展。支持在系统环境下安装多个PHP。路径检测针对HomeBrew以及MacPorts进行了优化。

安装需求

在开始之前,请先查看:Requiremet(英文)。确保已安装依赖包的开发版本用于编译PHP。

安装curl-L-Ohttps://github.com/phpbrew/phpbrew/raw/master/phpbrewchmod+xphpbrew#Movephpbrewtosomewherecabefoudbyyour$PATHsudomvphpbrew/usr/local/bi/phpbrew快速入门

急不可待?请直接查看:QuickStart(英文)。

开始使用

接下来,我们假定你有充足的时间来学习,这将会是一个循序渐进的教程——教你如何配置phpbrew。

初始设置

首先,初始化BashShell脚本:

phpbrewiit

接着在 .bashrc 或 .zshrc 文件增加如下行:

[[-e~/.phpbrew/bashrc]]&&source~/.phpbrew/bashrc

对于Fishshell用户,在 ~/.cofig/fish/cofig.fish 文件增加如下行:

source~/.phpbrew/phpbrew.fish

若需要在系统全局(非用户目录)使用phpbrew,请设置共享的phpbrew根目录,例如:

mkdir-p/opt/phpbrewphpbrewiit--root=/opt/phpbrew库路径设置

其次,请设置用于查找库文件的默认前缀,可选值有 macports,homebrew,debia,ubutu 或是自定义路径。

对于Homebrew用户:

phpbrewlookup-prefixhomebrew

对于Macports用户:

phpbrewlookup-prefixmacports基础用法

列出已知PHP版本:

phpbrewkow7.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...

列出更多次要版本:

$phpbrewkow--more

刷新PHP发布信息:

$phpbrewupdate

刷新旧版本(低于5.4):

请注意:我们不保证能够正确编译PHP官方停止维护的版本,请不要提交关于编译旧版本的Issus,此类Issue将不会修复。

$phpbrewupdate--old

列出已知的旧版本(低于5.4):

$phpbrewkow--old编译属于你的PHP

使用默认参数编译安装PHP非常简单:

$phpbrewistall5.4.0+default

这里我们推荐使用已包含绝大多数公共参数的 default(默认)参数集合。如果你需要「最小安装」,删掉default执行即可。

你可以使用-j或--jobs选项启用并行编译,例如:

$phpbrewistall-j$(proc)5.4.0+default

编译完成后执行测试用例:

$phpbrewistall--test5.4.0

测试环境,且包含调试信息:

$phpbrew-distall--test5.4.0

安装旧版本(低于5.3):

$phpbrewistall--old5.2.13

安装给定主要版本的最新次要版本:

$phpbrewistall5.6

安装预览版本:

$phpbrewistall7.2.0alpha1$phpbrewistall7.2.0beta2$phpbrewistall7.2.0RC3

通过指定的GitHubtag或brach安装:

$phpbrewistallgithub:php/php-src@PHP-7.2asphp-7.2.0-dev

安装下一个(非稳定)版本:

$phpbrewistallextasphp-7.3.0-dev清除编译目录$phpbrewcleaphp-5.4.0Variats

PHPBrew已经将配置选项整理、合并为「Variats」,你只需简单地指定某个Variat即可,phpbrew会自动在配置过程中检测引用目录、编译选项等。

PHPBrew提供默认的Variat,以及一些虚拟Variats。「DefaultVariat」包含绝大多数公共Variats;「VirtualVariats」可包含多个Variats,使用一个虚拟Variat即可一次性启用多个Variats。

只需执行variats子命令,即可列出它们:

$phpbrewvariatsVariats:all,apxs2,bcmath,bz2,caledar,cgi,cli,ctype,curl,dba,debug,dom,dtrace,editlie,embed,exif,fileifo,filter,fpm,ftp,gcov,gd,gettext,gmp,hash,icov,icu,imap,iifile,ilie,itl,ipc,ipv6,jso,kerberos,libgcc,mbregex,mbstrig,mcrypt,mhash,mysql,opcache,opessl,pctl,pcre,pdo,pgsql,phar,phpdbg,posix,readlie,sessio,soap,sockets,sqlite,static,tidy,tokeizer,wddx,xml,xml_all,xmlrpc,zip,zlib,ztsVirtualvariats:dbs:sqlite,mysql,pgsql,pdomb:mbstrig,mbregexeutral:small:bz2,cli,dom,filter,ipc,jso,mbregex,mbstrig,pcre,phar,posix,readlie,xml,curl,opessldefault:bcmath,bz2,caledar,cli,ctype,dom,fileifo,filter,ipc,jso,mbregex,mbstrig,mhash,mcrypt,pctl,pcre,pdo,phar,posix,readlie,sockets,tokeizer,xml,curl,opessl,zipeverythig:dba,ipv6,dom,caledar,wddx,static,iifile,ilie,cli,ftp,filter,gcov,zts,jso,hash,exif,mbstrig,mbregex,libgcc,pdo,posix,embed,sockets,debug,phpdbg,zip,bcmath,fileifo,ctype,cgi,soap,pctl,phar,sessio,tokeizer,opcache,imap,tidy,kerberos,xmlrpc,fpm,dtrace,pcre,mhash,mcrypt,zlib,curl,readlie,editlie,gd,itl,icu,opessl,mysql,sqlite,pgsql,xml,xml_all,gettext,icov,bz2,ipc,gmpUsigvariatstobuildPHP:phpbrewistallphp-5.3.10+defaultphpbrewistallphp-5.3.10+mysql+pdophpbrewistallphp-5.3.10+mysql+pdo+apxs2phpbrewistallphp-5.3.10+mysql+pdo+apxs2=/usr/bi/apxs2

在Variat前添加+前缀,代表启用此Variat,例如:

+mysql

在Variat前添加-前缀,代表禁用此Variat,例如:

-mysql

举个例子,假设你使用默认Variat,并且需要启用数据库支持(mysql,sqlite,postgresql)编译PHP,只需执行:

$phpbrewistall5.4.5+default+dbs

也可以:

$phpbrewistall5.3.10+mysql+sqlite+cgi$phpbrewistall5.3.10+mysql+debug+pgsql+apxs2$phpbrewistall5.3.10+pdo+mysql+pgsql+apxs2=/usr/bi/apxs2

将pgsql(PostgreSQL)扩展编译进PHP:

$phpbrewistall5.4.1+pgsql+pdo

若你的Mac上已经安装postgresql,也可以指定特定目录编译pgsql扩展:

$phpbrewistall5.4.1+pdo+pgsql=/opt/local/lib/postgresql91/bi

pgsql的路径即为pg_cofig所在目录,你可以在/opt/local/lib/postgresql91/bi找到它。

另外,你可以使用名为eutral的Variat来纯净编译PHP:

$phpbrewistall5.4.1+eutral

eutral意味着phpbrew不会增加包括--disable-all在内的任何额外编译参数,但部分用于安装pear的参数(例如--eable-libxml)依旧会被添加。

更多细节,请移步:PHPBrewCookbook(英文)。

拓展配置选项

如果想要传递更多拓展配置变量,你可以这么做:

$phpbrewistall5.3.10+mysql+sqlite--\--eable-ftp--apxs2=/opt/local/apache2/bi/apxs切换PHP版本

临时切换PHP版本:

$phpbrewuse5.4.22

切换默认PHP版本:

$phpbrewswitch5.4.18

关闭phpbrew:

$phpbrewoff

若需要启用ApachePHP模块,请注释或移除以下设置项:

$sudovim/etc/httpd/cof/httpd.cof#LoadModulephp5_module/usr/lib/httpd/modules/libphp5.3.21.so#LoadModulephp5_module/usr/lib/httpd/modules/libphp5.3.20.so扩展安装器

请查看:ExtesioIstaller(英文)。

配置php.ii

配置当前PHP版本的php.ii文件,只需执行如下命令即可:

$phpbrewcofig

如需切换编辑器,可执行如下命令指定EDITOR环境变量:

exportEDITOR=vimphpbrewcofig升级phpbrew

执行 self-update 即可从GitHub的 master 分支安装phpbrew最新版本。

$phpbrewself-update已安装的PHP

列出已安装的PHP:

$phpbrewlist

你可以在 ~/.phpbrew/php 目录找到已安装的PHP。例如,5.4.20版本位于:

~/.phpbrew/php/5.4.20/bi/php

你可以手动修改其php.ii:

~/.phpbrew/php/5.4.20/etc/php.ii

而PHP扩展的配置文件位于:

~/.phpbrew/php/5.4.20/var/db~/.phpbrew/php/5.4.20/var/db/xdebug.ii~/.phpbrew/php/5.4.20/var/db/apc.ii~/.phpbrew/php/5.4.20/var/db/memcache.ii等等...一键切换目录

切换至PHP编译目录:

$phpbrewbuild-dir

切换至PHPdist目录:

$phpbrewdist-dir

切换至PHPetc目录:

$phpbrewetc-dir

切换至PHPvar目录:

$phpbrewvar-dirPHPFPM

phpbrew内置一些有用的命令用于管理php-fpm。使用它们之前,请确认在PHP编译时启用了 +fpm。

启动php-fpm:

$phpbrewfpmstart

停止php-fpm:

$phpbrewfpmstop

列出php-fpm模块:

phpbrewfpmmodule

测试php-fpm配置:

phpbrewfpmtest

编辑php-fpm配置:

phpbrewfpmcofig

已安装的 php-fpm 位于 ~/.phpbrew/php/php-*/sbi 目录。

对应的 php-fpm.cof 文件位于 ~/.phpbrew/php/php-*/etc/php-fpm.cof.default 目录。

你可以把默认配置复制到自定义路径再使用,例如:

cp-v~/.phpbrew/php/php-*/etc/php-fpm.cof.default~/.phpbrew/php/php-*/etc/php-fpm.cofphp-fpm--php-ii{phpcofigfile}--fpm-cofig{fpmcofigfile}安装拓展应用

phpbrew内置了用来获取部分PHP应用的app命令。

安装Composer$phpbrewappgetcomposer安装PHPUitphpbrewappgetphpuit启用版本信息Prompt

使用"PHPBREW_SET_PROMPT=1"变量可将PHP版本信息加入ShellPrompt。

此变量默认值为"PHPBREW_SET_PROMPT=0"(即禁用),将如下行加入~/.bashrc文件,确保其在source~/.phpbrew/bashrc之前,即可启用此功能:

exportPHPBREW_SET_PROMPT=1

使用.phpbrew/bashrc内定义的phpbrew_curret_php_versio函数,可将版本信息嵌入到ShellPrompt。你可以将版本信息设置到 PS1 变量内,例如:

PS1="\$(phpbrew_curret_php_versio)\$"已知问题

对于PHP-5.3+版本,"Buildigitl64-bitfailsoOSX" https://bugs.php.et/bug.php?id=48795

将GD扩展编译进PHP,你需要指定libpg目录、libjpeg目录,例如:

$phpbrewistallphp-5.4.10+default+mysql+itl+gettext+apxs2=/usr/bi/apxs2 ----with-libdir=lib/x86_64-liux-gu --with-gd=shared --eable-gd-atf --with-jpeg-dir=/usr --with-pg-dir=/usr

故障排查

请移步:TroubleShootig(英文)。

常见问答

Q:如何使用不同的参数编译相同PHP版本?

A:截至目前,你可以安装php-5.x.x并重命名其目录/Users/phpbrew/.phpbrew/php/php-5.x.x(例如:php-5.x.x-super),并安装另一个php5.x.x。

功能介绍

phpbrew 是一个构建、安装多版本 PHP 到用户根目录的工具。 phpbrew 能做什么? 配置选项简化为「Variants」,无需担心路径问题。 支持使用 PDO,mysql,sqlit...

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论