Homebrew升级PHP后旧版本仍存在,只需执行brew unlink当前版本、brew link --force --overwrite目标版本,并修正~/.zshrc中PATH路径,再重启php-fpm与Web服务即可恢复使用。

Homebrew 升级 PHP 到 8.2.32 后旧版本“无法使用”,通常不是旧版本被删除了,而是 Homebrew 的链接机制自动指向了新版本,同时 PATH 或符号链接未保留对旧版本的访问路径。只要旧版本仍安装在系统中(如 php@8.1、php@7.4),就能快速恢复使用。
确认旧版本是否还在
Homebrew 不会因升级一个版本而自动卸载其他版本。先检查你曾经安装过的旧版本是否仍存在:
- 运行 brew list | grep php,查看类似
php@8.1、php@7.4的条目 - 用 brew --prefix php@8.1(替换为你想查的版本)确认安装路径是否存在
- 若返回路径如
/opt/homebrew/opt/php@8.1(Apple Silicon)或/usr/local/opt/php@8.1(Intel),说明该版本完好无损
恢复旧版本的终端可用性
关键在于让 php 命令重新指向旧版本,分两步操作:
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
-
取消当前链接:执行
brew unlink php@8.2(或你当前活跃的版本) -
链接目标旧版本:执行
brew link --force --overwrite php@8.1 - 再运行
php -v和which php,确认输出为 8.1.x 且路径指向/opt/homebrew/bin/php或/usr/local/bin/php
确保 Shell 环境不干扰
即使 brew link 成功,如果 shell 配置文件(如 ~/.zshrc)里硬编码了新版路径,旧版本也会被覆盖。检查并修正:
立即学习“PHP免费学习笔记(深入)”;
- 运行
grep "php@8.2" ~/.zshrc,若命中,用编辑器打开该文件,删掉或注释掉类似export PATH="/opt/homebrew/opt/php@8.2/bin:$PATH"的行 - 确保只保留一条指向你当前想用的版本,例如:
export PATH="/opt/homebrew/opt/php@8.1/bin:$PATH" - 执行
source ~/.zshrc生效
Web 服务(如 Apache / Nginx + php-fpm)需单独配置
终端切换成功 ≠ Web 服务自动同步。Apache 的 LoadModule 或 Nginx 的 fastcgi_pass 仍可能指向旧的 php-fpm 进程。务必检查:
- php-fpm 配置路径:如
/opt/homebrew/etc/php/8.1/php-fpm.d/www.conf - 启动对应版本的服务:
brew services start php@8.1,并停止其他版本:brew services stop php@8.2 - 重启 Web 服务器:
sudo apachectl restart或sudo nginx -s reload


















