Composer安装报错:Mac已装GMP但PHP无法加载的求助
我之前也碰到过一模一样的糟心情况!明明通过brew装好了GMP,php.ini也改了,可PHP就是死活不加载,折腾了好一阵才理顺,给你几个亲测有效的排查和解决步骤:
先确认PHP版本与GMP的匹配性
Mac上很容易同时存在多个PHP版本(比如系统自带的、brew安装的),先搞清楚你当前在用的是哪个PHP:执行php -v查看版本号。接着检查这个PHP的扩展目录位置:php -i | grep "extension_dir"。brew安装的GMP核心文件在/usr/local/opt/gmp/lib左右,但PHP需要的是对应版本编译好的扩展文件,不是直接用brew的GMP文件,这是很多人踩坑的点。清理php.ini里无效的配置项
Mac上PHP的GMP扩展文件名就是gmp.so,你加的extension=php_gmp.so是Windows环境下的写法,完全没用!赶紧把那行删掉,只保留extension=gmp.so。另外一定要确认你修改的是当前PHP对应的php.ini文件,执行php --ini就能看到PHP实际加载的配置文件路径,别改错了系统里的其他php.ini!用brew重新编译并关联PHP与GMP
如果你的PHP是通过brew安装的,最省心的办法就是重装对应版本的PHP:执行brew reinstall php@xx(把xx换成你的PHP版本,比如php@8.2)。brew会自动帮你编译PHP并关联已安装的GMP扩展,不用手动折腾扩展文件。要是你用的是系统自带的PHP,真心建议换成brew版的,系统自带的PHP权限和扩展管理太繁琐,容易出各种问题。验证扩展加载状态
做完上面的步骤后,重启终端(如果是web环境的话重启PHP-FPM),然后执行php -m | grep gmp,如果输出gmp就说明加载成功了,再打开phpinfo()页面也能看到GMP的相关信息。最后确认Composer依赖
确保你的项目composer.json里的依赖确实需要GMP扩展,有时候可能是其他依赖的问题,但只要GMP成功加载,Composer的依赖检查应该就能顺利通过了。
内容的提问来源于stack exchange,提问作者Albert

