本文深入分析在 macOS 或 WSL2(Ubuntu)开发环境中,通过 Homebrew 管理 PHP 多版本时,php -v 始终显示旧版本(如 php@5.6)的深层原因,并给出系统性解决方案,覆盖 PATH 冲突、符号链接逻辑、Shell 初始化配置、系统残留配置等关键环节。
遇到这种情况的开发者多半已经尝试过 brew link php@8.1 --force --overwrite,但 php -v 依然固执地输出 php@5.6。无需焦虑,这本质上是典型的“路径劫持”问题——系统并未将新版本的二进制路径置于 PATH 的最前端,或者旧版本的符号链接及残留配置仍在暗中干扰。尤其需注意的是,在 WSL2 的 Ubuntu 环境下,Homebrew 的安装路径与 macOS 截然不同(macOS 默认 /usr/local,而 WSL2 为 /home/linuxbrew/.linuxbrew),因此排查与修复方式也必须相应调整。
