当前位置: 首页 > 软件库 > 开发工具 > PHP开发工具 >

PHPBrew

安装多版本 PHP 到用户根目录的工具
授权协议 MIT
开发语言 PHP
所属分类 开发工具、 PHP开发工具
软件类型 开源软件
地区 不详
投 递 者 周昊乾
操作系统 Linux
开源组织
适用人群 未知
 软件概览

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。

  • PHPBrew Link #Issue 1 Environment:Ubuntu 16.04 Issue: #WARNING: curl extension might be required for fetching data. Solution:sudo apt install libcurl4-openssl-dev

  • phpbrew简介 phpbrew是一个php版本管理的命令行工具,用于在同一台机子上同时管理几个php版本,在linux和mac上都可以安装这个工具,目前这个工具在github上维护 github.com/phpbrew/php… 为什么要用phpbrew 对我而言,我需要在MAC上运行多个php版本,所以phpbrew是一个不错的选择,其实使用普通的homebrew安装或者通过编译安装也可以安

  • Installation procedure for php5.6 (officel release) and php7 (alpha) on Ubuntu 14.04, via phpbrew package. Install requirements for phpbrew: apt-get update apt-get upgrade apt-get build-dep php5 apt-g

  • We’ve all been in the situation where we have one version installed. Maybe that version is whatever came installed on our operating system. Maybe it is a version bundled into MAMP/WAMP/XAMPP. 我们所有人都已经

  • 安装步骤: 首先安装brew brew 安装php71最新版本 brew 安装nginx 安装一个php最新的版本 利用phpbrew安装多个版本 配置多个版本的php-fpm.conf 配置nginx 测试效果 安装过程:   jack$ xcode-select --install # 先安装code的命令工具,如果提示已经安装,无需理会 jack$ brew install nginx ja

  • 大多数语言编程的时候,都会碰到在不一样版本下的代码兼容性问题,测试代码兼容性,或者调试老旧代码,须要不一样的语言版本环境. ruby有了rbenv,rvm,nodejs也有nvm,固然php也应该有个相似的 phpenv , php-version , phpbrew 来管理PHP版本,简单查看了下这三个工具,我更偏向于phpbrew一些,其实我更愿意叫它PHPbrew.php 1.安装PHPbr

  • 我已经安装了PHP,MySQL和Apache堆栈进行开发。该安装正在使用以下配置文件: /etc/apache2/ /etc/php5/ 后来我用phpbrew安装了多个PHP版本。所有版本都可从CLI访问和切换。但Apache总是保持默认版本,没有使用phpbrew安装。 以下是我安装的PHP版本的列表。 $ phpbrew list Installed versions: php-5.4.13

  • 先安装php环境 apt-get install php7.0 默认会把以下的东西都安装好 php-common php7.0 php7.0-cli php7.0-common php7.0-fpm php7.0-json 一些常见路径 /etc/php/7.0/ # cli,fpm的配置路径 # 几个命令路径 /usr/sbin/php7.0-fpm /usr/bin/php -> /

  • apt update -y apt upgrade -y dpkg --configure -a # 安装依赖 sudo apt install -y build-essential libbz2-dev libreadline-dev libsqlite3-dev \ libcurl4-gnutls-dev libzip-dev libssl-dev libxml2-dev libxslt-de

  • phpbrew install 7.2 +default +openssl='/usr/local/opt/openssl/' +mysql

 相关资料
  • 我似乎在绕圈子,试图用phpbrew安装一个PHP版本。当尝试安装任何版本的php时,它会返回一个致命错误: 找不到openssl扩展名,要下载版本文件,您需要openssl。 但是当我尝试通过phpbrew安装openssl时,它也会抛出一个错误: 错误:未定义PHPBREW_PHP环境变量。此扩展命令要求您从生成列表中指定PHP版本。 任何帮助都将不胜感激。 phpbrew--debug安装p

  • 我似乎不能正确使用sudo pip安装,以便它安装到以下目录: 这样我就可以使用python导入模块 我跑过了 结果 但是,它不在正确的目录中 如何让sudo pip安装到正确的目录? 另外,我也试过了 sudo-pip安装刮擦 我得到以下信息 这两个实例都表明它已经安装,但并不正确。例如,当我在python中运行以下导入: 我尝试了以下方法:

  • 我正在尝试使用PHPBrew安装PHP5.4,但出现以下错误: 用 我的操作系统:

  • 当我运行xampp php版本7时都很好,但当我运行xampp php版本8但我当前的项目不工作时,这是我的laravel 9 xampp php版本8当前项目 还有一个问题,当我运行新项目并安装npm安装时 和当我运行php工匠迁移和服务后,然后登录网址

  • 本文向大家介绍lnmp安装多版本PHP共存的方法详解,包括了lnmp安装多版本PHP共存的方法详解的使用技巧和注意事项,需要的朋友参考一下 通过lnmp安装了PHP7版本,但是发现与程序不兼容,需要降低到7.0以下的版本。 查找lnmp的install.sh文件,一般在/root/lnmp1.5/install.sh 下执行命令 sudo ./install.sh mphp 等待安装过程 安装结束

  • 目录的版本 Subversion会记录目录树的结构,不仅仅是文件的内容。这是编写Subversion替代CVS最重要的一个原因。 以下是对你这意味着什么的说明,作为一个前CVS用户: svn add和svn delete现在也工作在目录上了,就像在文件上一样,还有svn copy和svn move也一样。然而,这些命令不会导致版本库即时的变化,相反,工作的项目只是“预定要”添加和删除,在运行svn

  • 我正在使用mac os并安装MAMP 5.7。当我在终端上运行PHP-v时,它说PHP版本是7.2,但是当我尝试创建Laravel项目时,我得到了这个错误。我不知道为什么编写者认识到5.6中的PHP版本

  • > 其中:脚本'c:\users\Peter Snee\documents\angularionic\quotesapp\platforms\android\Cordovalib\Cordova.gradle'行:68 错误:评估项目':app'时出现问题。 未找到已安装的生成工具。安装Android build tools版本19.1.0或更高版本。 错误:评估项目':app'时出现问题。 未找