phpbrew 是一个在你的用户目录中管理多个 PHP 版本的工具,最大的好处是不需要 sudo 权限就能轻松切换,非常适合本地开发环境。
下面是完整的安装和使用指南,帮你快速上手。
📦 安装 phpbrew
你需要在终端里执行几个命令。
-
下载并安装
curl -L -O https://github.com/phpbrew/phpbrew/releases/latest/download/phpbrew.phar chmod +x phpbrew.phar sudo mv phpbrew.phar /usr/local/bin/phpbrew然后运行
phpbrew init初始化配置,这会在你用户目录下生成~/.phpbrew文件夹。 -
配置 Shell 环境
为了让phpbrew命令在任何终端窗口生效,需要把它加到你的 Shell 配置文件里。- 对于 Bash 用户:
echo '[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc' >> ~/.bashrc source ~/.bashrc - **对于 Zsh 用户 (macOS 用户) **:
echo '[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc' >> ~/.zshrc source ~/.zshrc
如果想了解一个更先进、更现代的方法,可以看看 Laravel Herd,它用起来会更省心。
- 对于 Bash 用户:
-
安装依赖库
在编译 PHP 之前,需要安装一些依赖库,这样才能保证 PHP 的核心功能正常。- Debian/Ubuntu 系列:
sudo apt update sudo apt install -y gcc make autoconf libc-dev pkg-config libxml2-dev libsqlite3-dev libcurl4-openssl-dev libonig-dev libedit-dev libssl-dev libbz2-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev libgmp-dev libgmp3-dev libc-client2007e-dev libkrb5-dev libpspell-dev libicu-dev libenchant-dev libreadline-dev libtidy-dev - CentOS/RHEL 系列:
sudo yum groupinstall -y "Development Tools" sudo yum install -y libxml2-devel sqlite-devel curl-devel libpng-devel libjpeg-devel freetype-devel bzip2-devel libedit-devel openssl-devel gmp-devel libc-client-devel libicu-devel libmcrypt-devel enchant-devel readline-devel libtidy-devel
如果在 macOS 上用,强烈推荐先安装 Homebrew,然后
phpbrew lookup-prefix homebrew,它会自动帮你找到库文件的位置。 - Debian/Ubuntu 系列:
▶️ 基础操作:查、装、切
安装好后,这几个最常用的命令一定要掌握。
# 1. 查看所有可安装的 PHP 版本
phpbrew known
# 2. 查看更详细的版本列表
phpbrew known --more
# 3. 安装 PHP 7.4(带默认扩展)
phpbrew install 7.4 +default
# 4. 切个版本试试!
phpbrew switch 7.4
# 5. 想只用一次某个版本?用 use 就行
phpbrew use 7.4
# 6. 看看现在用的是哪个
php -v
🎛️ 进阶技巧:定制你的 PHP
这就是 phpbrew 强大的地方了,你可以像搭乐高一样,自由选择要开启哪些扩展和功能(它们被称为“变体”)。
什么时候用哪个?
+default(最省事): 如果你就想马上能用,装它就行,它已经包含了常用的扩展和功能。- Web 开发(PHP-FPM + 数据库):
开发时phpbrew install 8.2 +default +fpm +mysql +sqlite+fpm很方便,+mysql和+sqlite这两个命令能自动配置好数据库支持。 - 追求性能(+opcache):
如果想用上 Opcache 这个字节码缓存工具来提速,在命令里加上phpbrew install 8.1 +default +fpm +opcache+opcache就行。 - 禁用某些功能:
用“-”号可以移除你不想要的东西,让 PHP 变得更轻量。phpbrew install 7.4 +default -debug -bcmath
如果安装好之后发现少了什么,可以单独安装扩展:
phpbrew ext install yaml
🤔 常见问题怎么办?
安装老版本或旧版依赖时,有时会遇到一些报错。
-
安装旧版 PHP 报错 (e.g., 5.x)
可以试试先更新旧版本列表:phpbrew update --old -
configure: error: mcrypt.h not found
可以用下面这个命令,告诉 phpbrew 去哪里找libmcrypt:phpbrew install 5.6 +default -- --with-mcrypt=/usr/local -
configure: error: Please reinstall the libcurl distribution
安装libcurl4-openssl-dev就好了。装完后别忘了清除缓存再试:phpbrew purge -
configure: error: jpeglib.h not found.
像前面说的,需要libjpeg-dev这个库。在 Ubuntu/Debian 上可以这样装:sudo apt install -y libjpeg-dev -
gcc: error: trying to exec 'cc1plus'
像前面说的,需要g++这个编译器,用包管理器装就行。例如在 Ubuntu/Debian 上:sudo apt install -y g++
错误问题 phpbrew update 报错
===> Fetching release list...
Downloading https://www.php.net/releases/index.php?json=1&version=8&max=100 via curl extension
Downloading https://www.php.net/releases/index.php?json=1&version=7&max=100 via curl extension
PHP Warning: file_put_contents(/root/.phpbrew/php-releases.json): Failed to open stream: No such file or directory in phar:///usr/local/bin/phpbrew/src/PhpBrew/ReleaseList.php on line 129
Exception: Can't store release json file
Trace:
PHP Warning: Undefined array key "args" in phar:///usr/local/bin/phpbrew/vendor/corneltek/cliframework/src/ExceptionPrinter/DevelopmentExceptionPrinter.php on line 87
PHP Fatal error: Uncaught TypeError: CLIFramework\ExceptionPrinter\DevelopmentExceptionPrinter::dumpArgs(): Argument #1 ($args) must be of type array, null given, called in phar:///usr/local/bin/phpbrew/vendor/corneltek/cliframework/src/ExceptionPrinter/DevelopmentExceptionPrinter.php on line 87 and defined in phar:///usr/local/bin/phpbrew/vendor/corneltek/cliframework/src/ExceptionPrinter/DevelopmentExceptionPrinter.php:69
Stack trace:
#0 phar:///usr/local/bin/phpbrew/vendor/corneltek/cliframework/src/ExceptionPrinter/DevelopmentExceptionPrinter.php(87): CLIFramework\ExceptionPrinter\DevelopmentExceptionPrinter->dumpArgs()
#1 phar:///usr/local/bin/phpbrew/vendor/corneltek/cliframework/src/ExceptionPrinter/ProductionExceptionPrinter.php(14): CLIFramework\ExceptionPrinter\DevelopmentExceptionPrinter->dumpTraceInPhar()
#2 phar:///usr/local/bin/phpbrew/src/PhpBrew/Console.php(149): CLIFramework\ExceptionPrinter\ProductionExceptionPrinter->dump()
#3 phar:///usr/local/bin/phpbrew/bin/phpbrew(26): PhpBrew\Console->runWithTry()
#4 /usr/local/bin/phpbrew(14): require('...')
#5 {main}
thrown in phar:///usr/local/bin/phpbrew/vendor/corneltek/cliframework/src/ExceptionPrinter/DevelopmentExceptionPrinter.php on line 69
- oniguruma-devel 错误
CentOS 8 / Rocky Linux 8 / AlmaLinux 8
启用 PowerTools 仓库:sudo dnf config-manager --set-enabled PowerTools
安装 EPEL 和依赖包:sudo dnf install epel-release
然后执行 sudo dnf install oniguruma oniguruma-devel
这个错误是因为 phpbrew 需要获取PHP官方版本的清单,但它在你的 root 用户目录下没有找到存储这个清单的文件。
问题的关键在于当前你使用的是 root 用户,而 phpbrew 本身就是为普通用户免 sudo 权限设计的。作为普通用户,phpbrew 会自然地在 $HOME 目录下创建 .phpbrew/ 这个工作目录并存储清单文件,操作起来会非常顺畅。
你可以试试下面几种方法来快速解决问题。
📝 解决方法
⚠️ 方法一:为 root 用户创建目录(临时方案)
核心命令:mkdir -p /root/.phpbrew 和 phpbrew update
如果你坚持继续使用 root 用户,可以手动创建这个缺失的目录。请在终端中按顺序执行:
- 创建目录:
mkdir -p /root/.phpbrew - 重新执行命令:
phpbrew update请注意:尽管
phpbrew支持root用户,但这不符合其设计理念。即便解决了当前问题,在后续编译安装PHP时,root用户身份依然可能引发各种权限或路径的奇怪错误。
✅ 方法二:切换回普通用户(推荐方案)
核心命令:exit 或 su - <用户名>,然后重新初始化 phpbrew
这是最稳妥、最推荐的解决方案,能从根本上避免后续麻烦。
- 切换到你的普通用户账号:
exit # 或者 su - 你的用户名 - 为新用户初始化
phpbrew:
登录普通用户后,你需要重新进行phpbrew的初始化,让它自动在普通用户的$HOME目录下创建所需的文件夹和文件。phpbrew init # 然后,根据终端输出的提示,将 source 命令添加到你的 ~/.bashrc 或 ~/.zshrc 文件中
对于你这个具体问题,更推荐你尝试 切换回普通用户(方法二),这通常是最优解。如果需要,我很乐意帮你看看切换用户后,如何正确配置 phpbrew 的 bash 环境。