命令行执行PHP提示GMP未找到?PHP7.1-FPM环境问题排查
问题根源分析:CLI与PHP-FPM的环境差异
这问题其实很典型,核心原因就是你命令行里调用的PHP环境,和WordPress运行依赖的PHP-FPM环境,压根不是同一个(或者它们的扩展配置完全不匹配)。
我来拆解下具体原因:
1. 两套独立的PHP运行环境
很多服务器上,PHP CLI(命令行模式)和PHP-FPM(网页服务模式)是分开安装、独立配置的:
- 可能版本不同:你命令行敲
php -v得到的是其他PHP版本,而WordPress用的PHP-FPM是7.1,版本差异导致扩展支持不一样; - 就算版本相同,它们的配置文件(php.ini)和扩展加载目录也可能完全分开。比如FPM的php.ini里已经开启了gmp扩展,但CLI的php.ini里压根没加
extension=gmp.so这行配置。
2. 扩展加载的配置差异
就算是同一个PHP版本,CLI和FPM的扩展加载逻辑也可能不同:
- CLI模式下,PHP会读取自己专属的php.ini文件(可以用
php --ini查看具体路径); - PHP-FPM则会读取对应服务配置里指定的php.ini文件(你可以在WordPress里新建一个测试文件,输出
phpinfo(),找到「Loaded Configuration File」项查看路径)。
大概率FPM的配置文件里已经启用了gmp扩展,而CLI的配置文件里完全没开启这个扩展。
快速验证方法
- 对比版本:命令行执行
php -v,同时在WordPress里查看phpinfo()的PHP版本,确认二者是否一致; - 检查扩展:命令行执行
php -m,看输出列表里有没有gmp;再对照phpinfo()里的「gmp」模块是否存在; - 对比配置文件路径:用
php --ini查看CLI的配置文件路径,和phpinfo()里FPM的配置文件路径做对比。
解决思路
- 如果是版本不同:给CLI安装对应PHP7.1版本的gmp扩展(比如Ubuntu环境下执行
sudo apt install php7.1-gmp); - 如果是配置问题:找到CLI的php.ini文件,添加
extension=gmp.so(Windows环境替换为extension=gmp.dll),之后重启命令行或相关服务; - 临时方案:直接调用PHP-FPM对应的CLI二进制文件执行脚本,比如如果FPM用的是php7.1,就敲
php7.1 -f file.php试试。
内容的提问来源于stack exchange,提问作者Sam Tyurenkov
相关产品推荐
相关产品推荐

