PHPBrew 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
PHPBrew 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: MIT
开发语言: PHP
操作系统: Linux
收录时间: 2019-05-14
提 交 者: 红薯

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

phpbrew 能做什么?

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

安装需求

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

安装

curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
chmod +x phpbrew

# Move phpbrew to somewhere can be found by your $PATH
sudo mv phpbrew /usr/local/bin/phpbrew

快速入门

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

开始使用

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

初始设置

首先,初始化 Bash Shell 脚本:

phpbrew init

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

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

对于 Fish shell 用户,在 ~/.config/fish/config.fish 文件增加如下行:

source ~/.phpbrew/phpbrew.fish

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

mkdir -p /opt/phpbrew
phpbrew init --root=/opt/phpbrew

库路径设置

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

对于 Homebrew 用户:

phpbrew lookup-prefix homebrew

对于 Macports 用户:

phpbrew lookup-prefix macports

基础用法

列出已知 PHP 版本:

phpbrew known

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

列出更多次要版本:

$ phpbrew known --more

刷新 PHP 发布信息:

$ phpbrew update

刷新旧版本(低于5.4):

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

$ phpbrew update --old

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

$ phpbrew known --old

编译属于你的 PHP

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

$ phpbrew install 5.4.0 +default

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

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

$ phpbrew install -j $(nproc) 5.4.0 +default

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

$ phpbrew install --test 5.4.0

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

$ phpbrew -d install --test 5.4.0

安装旧版本(低于5.3):

$ phpbrew install --old 5.2.13

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

$ phpbrew install 5.6

安装预览版本:

$ phpbrew install 7.2.0alpha1
$ phpbrew install 7.2.0beta2
$ phpbrew install 7.2.0RC3

通过指定的 GitHub tag 或 branch 安装:

$ phpbrew install github:php/php-src@PHP-7.2 as php-7.2.0-dev

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

$ phpbrew install next as php-7.3.0-dev

清除编译目录

$ phpbrew clean php-5.4.0

Variants

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

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

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

$ phpbrew variants

Variants:
  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, zts


Virtual variants:
  dbs:        sqlite, mysql, pgsql, pdo

  mb:         mbstring, mbregex

  neutral:

  small:      bz2, cli, dom, filter, ipc, json, mbregex, mbstring, pcre, phar,
              posix, readline, xml, curl, openssl

  default:    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, zip

  everything: 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, gmp


Using variants to build PHP:

  phpbrew install php-5.3.10 +default
  phpbrew install php-5.3.10 +mysql +pdo
  phpbrew install php-5.3.10 +mysql +pdo +apxs2
  phpbrew install php-5.3.10 +mysql +pdo +apxs2=/usr/bin/apxs2

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

+mysql

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

-mysql

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

$ phpbrew install 5.4.5 +default+dbs

也可以:

$ phpbrew install 5.3.10 +mysql+sqlite+cgi

$ phpbrew install 5.3.10 +mysql+debug+pgsql +apxs2

$ phpbrew install 5.3.10 +pdo +mysql +pgsql +apxs2=/usr/bin/apxs2

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

$ phpbrew install 5.4.1 +pgsql+pdo

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

$ phpbrew install 5.4.1 +pdo+pgsql=/opt/local/lib/postgresql91/bin

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

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

$ phpbrew install 5.4.1 +neutral

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

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

拓展配置选项

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

$ phpbrew install 5.3.10 +mysql +sqlite -- \
    --enable-ftp --apxs2=/opt/local/apache2/bin/apxs

切换 PHP 版本

临时切换 PHP 版本:

$ phpbrew use 5.4.22

切换默认 PHP 版本:

$ phpbrew switch 5.4.18

关闭 phpbrew:

$ phpbrew off

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

$ sudo vim /etc/httpd/conf/httpd.conf
# LoadModule php5_module        /usr/lib/httpd/modules/libphp5.3.21.so
# LoadModule php5_module        /usr/lib/httpd/modules/libphp5.3.20.so

扩展安装器

请查看:Extension Installer(英文)。

配置 php.ini

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

$ phpbrew config

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

export EDITOR=vim
phpbrew config

升级 phpbrew

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

$ phpbrew self-update

已安装的 PHP

列出已安装的 PHP:

$ phpbrew list

你可以在 ~/.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 编译目录:

$ phpbrew build-dir

切换至 PHP dist 目录:

$ phpbrew dist-dir

切换至 PHP etc 目录:

$ phpbrew etc-dir

切换至 PHP var 目录:

$ phpbrew var-dir

PHP FPM

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

启动 php-fpm:

$ phpbrew fpm start

停止 php-fpm:

$ phpbrew fpm stop

列出 php-fpm 模块:

phpbrew fpm module

测试 php-fpm 配置:

phpbrew fpm test

编辑 php-fpm 配置:

phpbrew fpm config

已安装的 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.conf

php-fpm --php-ini {php config file} --fpm-config {fpm config file}

安装拓展应用

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

安装 Composer

$ phpbrew app get composer

安装 PHPUnit

phpbrew app get phpunit

启用版本信息 Prompt

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

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

export PHPBREW_SET_PROMPT=1

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

PS1=" \$(phpbrew_current_php_version) \$ "

已知问题

  • 对于 PHP-5.3+ 版本,"Building intl 64-bit fails on OS X" https://bugs.php.net/bug.php?id=48795

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

    $ phpbrew install php-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。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

PHPBrew 的相关资讯

还没有任何资讯

PHPBrew 的相关博客

PHP的多版本环境管理

        大多数语言编程的时候,都会碰到在不同版本下的代码兼容性问题,测试代码兼容性,或者调试老旧代码,需要不同的语...

PHP version manager

phpbrew builds and installs multiple version php(s) in your $HOME directory. https://github.com/phpbrew/phpbrew...

常用开源项目收集

自己常用的开源项目,像sqlmap、jenv、phpbrew等等

收藏了8年的PHP优秀资源,都给你整理好了

以下是我整理好的 PHP 资源,各位看官拿去用,不用再自己找了。 每周在 GitHub 上更新,觉得不错请点个 Star ❤️ 如转载分享...

收藏了8年的PHP优秀资源,都给你整理好了

https://segmentfault.com/a/1190000018071558 最后更新于 2019.02.12 以下是我整理好的 PHP 资源,各位看官拿去用,不用再自...

PHP 优秀资源汇集(转)

文章目录 原文地址: https://shockerli.net/post/php-awesome/ GitHub: https://github.com/shockerli/php-awesome PHP PSR ...

收藏了8年的PHP优秀资源,都给你整理好了

最后更新于 2019.05.26 以下是我整理好的 PHP 资源,各位看官拿去用,不用再自己找了。 每周在 GitHub 上更新,觉得不错请点个...

PHPBrew 的相关问答

还没有任何问答,马上提问

评论 (2)

加载中
MacOS Mojove 10.14.6 安装报错 checking for BZip2 in default path... not found 但是 bzip2 已经安装了
2019/08/22 18:30
回复
举报
i6u
nice
2019/05/15 10:16
回复
举报
更多评论
2 评论
23 收藏
分享
返回顶部
顶部