Mac下Homebrew管理PHP启动报错,求PHP7.1及以上版本恢复方案
解决PHP Startup: Unable to load dynamic library 'intl.so' 错误(Homebrew + Mac)
我之前在Mac上用Homebrew管理PHP版本时也碰到过一模一样的问题,尤其是切换版本或者清理旧包后,很容易出现这种扩展找不到的情况,给你整理几个亲测有效的解决步骤:
1. 先确认当前PHP环境状态
首先得搞清楚你当前在用的PHP版本和扩展的实际情况:
- 执行
php -v确认当前激活的PHP版本,确保你要恢复的是PHP7.1或更高版本 - 执行
ls /usr/local/opt/php71-intl/检查错误提示里的扩展目录是否存在,如果这个目录直接不存在,说明对应的intl扩展包已经被删除了
2. 重新安装对应版本的intl扩展
如果扩展目录不存在,先安装PHP7.1对应的intl扩展:
- 首先添加支持旧版PHP的Homebrew源(因为官方源可能已经移除了旧版本包):
brew tap exolnet/homebrew-deprecated - 然后安装php71-intl扩展:
brew install php71-intl
3. 检查并修正PHP配置
有时候扩展装了,但PHP配置里的路径不对或者扩展被注释了:
- 执行
php --ini找到当前PHP加载的主配置文件(比如/usr/local/etc/php/7.1/php.ini) - 打开这个配置文件,查找
extension=intl.so这一行:- 如果前面有分号
;,把分号去掉取消注释 - 如果是指定了绝对路径,确保路径是
/usr/local/opt/php71-intl/intl.so,和错误提示里的路径一致
- 如果前面有分号
4. 切换到目标PHP版本并重启服务
确保系统当前用的是PHP7.1版本,并且重启服务让配置生效:
- 切换并链接PHP7.1:
brew link php@7.1 --force --overwrite - 如果用了PHP-FPM服务,重启它:
brew services restart php@7.1
5. 验证问题是否解决
最后执行 php -v 和 php -m,检查intl扩展是否出现在已加载的扩展列表里,同时再运行PHP脚本或者命令,看看启动时的警告是否消失。
如果以上步骤都不行,可能是PHP7.1本身的安装文件损坏了,可以尝试重新安装整个PHP7.1:
brew reinstall php@7.1
内容的提问来源于stack exchange,提问作者VickenCode




