宝塔面板PHP中gmp扩展未启用导致“Call to undefined function gmp_init()”错误,需先安装系统gmp开发库,再通过面板图形界面安装扩展;若不可用则手动编译并配置php.ini,最后验证extension=gmp.so生效及函数可用。

如果您在宝塔面板的PHP环境中运行加密类库(如phpseclib、OpenSSL相关扩展依赖)时提示“Call to undefined function gmp_init()”,说明当前PHP未启用gmp扩展。以下是为宝塔面板中指定PHP版本安装gmp扩展的具体步骤:
一、确认系统是否已安装gmp开发库
gmp扩展编译依赖系统级gmp-devel(CentOS/RHEL)或libgmp-dev(Ubuntu/Debian)包,缺失将导致编译失败。
1、登录服务器终端,执行命令检查gmp开发库状态:
CentOS/RHEL系统:运行 rpm -q gmp-devel
Ubuntu/Debian系统:运行 dpkg -l | grep libgmp-dev
2、若未安装,执行对应命令安装:
CentOS/RHEL:运行 yum install -y gmp-devel
Ubuntu/Debian:运行 apt-get update && apt-get install -y libgmp-dev
立即学习“PHP免费学习笔记(深入)”;
二、通过宝塔面板图形界面启用gmp扩展
宝塔面板内置PHP扩展管理模块可自动完成gmp扩展的编译与配置,适用于大多数主流PHP版本(7.2–8.3)。
1、进入宝塔面板首页,点击左侧菜单栏的软件商店 → 找到已安装的PHP版本(如PHP 7.4),点击右侧设置按钮
2、在打开的PHP设置页面中,切换至安装扩展选项卡
3、在扩展列表中找到gmp,点击右侧安装按钮
4、等待安装进度条完成,面板将自动重启PHP服务并写入extension=gmp.so配置
三、手动编译安装gmp扩展(适用于面板未提供该扩展或自定义PHP路径场景)
当面板扩展列表中无gmp选项,或使用了非标准PHP安装路径时,需手动进入PHP源码目录执行编译。
1、定位PHP源码目录:通常位于 /www/server/php/{版本号}/src/ext/gmp,例如PHP 8.1对应路径为 /www/server/php/81/src/ext/gmp
2、进入该目录后依次执行:
/www/server/php/81/bin/phpize
./configure --with-php-config=/www/server/php/81/bin/php-config
make && make install
3、编辑PHP配置文件:
执行 echo "extension=gmp.so" >> /www/server/php/81/etc/php.ini
4、重启PHP服务:
在宝塔面板PHP设置页点击重载配置,或执行命令 service php-fpm-81 reload
四、验证gmp扩展是否生效
扩展安装完成后需确认其已被PHP加载且函数可用,避免配置未生效或版本冲突。
1、在宝塔面板中,进入对应PHP版本的配置修改页面,搜索关键词extension=,确认存在extension=gmp.so行且未被注释
2、创建临时PHP探针文件(如/tmp/gmp_test.php),内容为:<?php echo extension_loaded('gmp') ? 'gmp loaded' : 'gmp not loaded'; ?>
3、在终端执行:/www/server/php/81/bin/php /tmp/gmp_test.php,输出gmp loaded表示成功
4、运行函数检测:/www/server/php/81/bin/php -r "var_dump(function_exists('gmp_init'));",返回bool(true)即通过











