Homebrew中php71变为php@7.1后扩展失效,重装遇弃用提示求助
解决Homebrew中PHP7.1命名变更导致的扩展兼容问题
我懂你这种折腾半天反而更乱的挫败感——Homebrew对旧PHP版本的命名调整确实坑了不少人,尤其是扩展的兼容性问题。咱们一步步把它捋顺:
1. 彻底清理旧的PHP7.1残留
首先得把所有相关的旧文件、包都清干净,避免残留干扰后续安装:
- 强制卸载当前的php@7.1及关联扩展:
brew uninstall --force php@7.1 brew uninstall --force php71-redis php71-gmp # 把你之前装过的旧扩展都列在这里 - 清理Homebrew缓存:
brew cleanup php@7.1 - 手动删除残留的配置目录(先备份重要配置,比如php.ini):
mv /usr/local/etc/php/7.1 ~/php71-config-backup # 备份 rm -rf /usr/local/etc/php/7.1
2. 调整Homebrew源并更新
原来的homebrew/php tap已经被废弃,所有PHP版本现在都托管在homebrew/core里,先确保源是正确的:
- 移除旧的php tap(如果之前添加过):
brew untap homebrew/php - 更新Homebrew到最新版本:
brew update
3. 重新安装php@7.1
现在官方标准命名就是php@7.1,直接安装即可:
brew install php@7.1
安装完成后,必须把它的路径加入环境变量(否则终端可能还是调用旧版本或找不到):
- 如果用Zsh:
echo 'export PATH="/usr/local/opt/php@7.1/bin:$PATH"' >> ~/.zshrc echo 'export PATH="/usr/local/opt/php@7.1/sbin:$PATH"' >> ~/.zshrc source ~/.zshrc - 如果用Bash:
echo 'export PATH="/usr/local/opt/php@7.1/bin:$PATH"' >> ~/.bash_profile echo 'export PATH="/usr/local/opt/php@7.1/sbin:$PATH"' >> ~/.bash_profile source ~/.bash_profile
验证安装:
php -v # 应该显示PHP 7.1.x的版本 which php # 应该指向/usr/local/opt/php@7.1/bin/php
4. 安装兼容的扩展(重点!)
原来的php71-redis这类扩展包已经废弃,现在有两种可靠的方式安装扩展:
方式一:用Homebrew的对应扩展包
部分旧扩展在Homebrew里有适配php@7.1的版本,命名格式是php@7.1-xxx,比如安装gmp:
brew install php@7.1-gmp
方式二:用PECL安装(更稳妥,适配所有旧版本)
对于像Redis这类高版本扩展不再支持PHP7.1的情况,需要指定兼容的版本号:
- 先确保PECL是对应php@7.1的:
which pecl # 应该输出/usr/local/opt/php@7.1/bin/pecl - 安装Redis(指定兼容PHP7.1的最高版本4.3.0):
pecl install redis-4.3.0 - 安装GMP:
pecl install gmp
安装完成后,重启PHP-FPM(如果用的话):
brew services restart php@7.1
验证扩展是否加载:
php -m | grep -E 'redis|gmp' # 能看到对应扩展名就说明成功了
为什么会出现这个问题?
Homebrew在2019年左右就把旧PHP版本(7.3及以下)从单独的homebrew/php仓库迁移到了homebrew/core,并且统一命名为php@X.Y的格式,原来的php71、php71-redis等包被标记为废弃,所以你现在不管怎么尝试装php71,Homebrew都会自动引导你安装php@7.1,这是官方的规范变更导致的。
内容的提问来源于stack exchange,提问作者Scorpioniz
相关产品推荐
相关产品推荐

