CentOS7 VPS更新PHPASN1后遇ext-gmp缺失问题求助
解决CentOS7下PHP7.0搭配fgrosse/phpasn1 2.0.1时缺失ext-gmp的问题
我来帮你搞定这个APNS服务器更新后碰到的问题,之前我在CentOS7+PHP7.0的环境里也处理过类似的情况,咱们一步步来:
问题根源
你更新后的fgrosse/phpasn1 2.0.1版本开始依赖PHP的gmp扩展(之前的1.x版本不需要这个),而你的CentOS7 PHP7.0环境默认没装这个扩展,所以才会报这个错误。
解决办法(两种可选)
方法一:安装PHP7.0的gmp扩展(推荐,保持新版本包)
- 先安装系统层面的gmp依赖库,编译PHP扩展需要它:
yum install gmp-devel -y - 安装PHP7.0对应的gmp扩展:
如果你用的是remi源(大部分CentOS7用户装PHP7.0都会用这个源),直接执行:
要是你还没配置remi源,先执行这几步添加源:yum install php70-php-gmp -y# 安装epel源 yum install epel-release -y # 安装remi源 yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y # 启用PHP7.0的仓库 yum-config-manager --enable remi-php70 - 重启你的PHP服务(根据你用的服务选择):
用PHP-FPM的话:
用Apache的话:systemctl restart php70-php-fpmsystemctl restart httpd - 验证扩展是否安装成功:
如果输出php -m | grep gmpgmp就说明安装成功了,之后再重新执行composer install或者composer update就没问题了。
方法二:回退到不需要gmp的PHPASN1旧版本(适合不想折腾扩展的情况)
如果你不想安装gmp扩展,可以指定安装PHPASN1的1.x系列版本(这个版本和你之前用的环境兼容,不需要gmp):
composer require fgrosse/phpasn1:^1.5
执行这个命令后,Composer会自动安装兼容的旧版本,就能恢复之前的APNS服务了。
额外提示
如果你的PHP是源码编译的,那需要手动编译gmp扩展:
- 找到你PHP7.0的源码包,进入
ext/gmp目录 - 执行:
phpize ./configure --with-gmp make && make install - 打开
php.ini文件,添加一行extension=gmp.so - 重启PHP服务即可
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

