macos 多版本 php 切换应使用 homebrew 原生方案:独立安装 php@8.1/8.2/8.3,通过 brew unlink + brew link --force 切换 cli 默认版本,项目级用 bin/php 脚本隔离,web 服务需手动重启对应 php-fpm 并核对配置。
在 macos 上实现多版本 php 的无感切换,关键不是装得全,而是管得稳、切得准、不干扰。homebrew 原生能力已完全胜任,无需第三方工具(如已停用的 bew-php-switcher),也不必手动改 path 或写一堆 alias。
安装多个 PHP 版本(干净隔离)
Homebrew 官方直接支持主流历史版本,全部独立安装、路径隔离:
- 运行
brew install php@8.1 php@8.2 php@8.3—— 每个版本装在单独目录,例如 Apple Silicon 下为/opt/homebrew/opt/php@8.2/bin/php - 旧版如 php@7.4 已被 Homebrew 移除;若项目强依赖,优先考虑升级或改用 phpbrew/容器,避免编译失败和安全风险
- 安装后不自动生效,只是“待命”;不会覆盖系统 /usr/bin/php,也不会互相污染
全局默认版本切换(轻量可靠)
用 brew unlink + brew link --force 切换 CLI 默认版本,所有终端新开 session 自动继承:
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
- 先断开当前链接:
brew unlink php - 再强制链接目标版本:
brew link --force php@8.2(--force不可省略) - 验证:
which php应返回/opt/homebrew/bin/php,php -v显示对应版本 - 注意:此操作不影响已运行的后台进程(如
php -S),但新终端立即生效
项目级 PHP 版本绑定(按需隔离)
避免全局切换误伤其他项目,推荐在项目根目录下用 PATH 前置法或 bin/php 脚本:
- 在项目中新建
bin/php文件,内容为:
exec /opt/homebrew/opt/php@8.1/bin/php "$@"
- 赋予执行权限:
chmod +x bin/php - 后续命令如
./bin/php -v或 Composer 使用该版本,完全与全局无关 - 比写
export PATH=...到.zshrc更安全,不污染 shell 环境
Web 服务同步更新(CLI ≠ Web)
改完 CLI 版本,PHP-FPM 或 Nginx+FastCGI 并不会自动跟着变:
- 重启对应版本的 PHP-FPM:
brew services restart php@8.2 - 确认 Nginx 配置中
fastcgi_pass指向正确 socket(如127.0.0.1:9002),不同版本建议用不同端口避免冲突 - 检查
php --ini输出的 Loaded Configuration File,确保你编辑的是当前版本的php.ini - 扩展(如 xdebug、pdo_mysql)必须匹配 PHP 版本;混用会报
Unable to load dynamic library
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










