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

我要开发同款
匿名用户2019年05月14日
28阅读
开发技术PHP
所属分类开发工具、PHP开发工具
授权协议MIT

作品详情

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.0Variants

PHPBrew已经将配置选项整理、合并为「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/bin

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

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

$phpbrewinstall5.4.1+neutral

neutral意味着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-dirPHPFPM

phpbrew内置一些有用的命令用于管理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。

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

评论