Cpanel已开启json、mbstring扩展仍提示缺失该如何解决
cPanel环境PHP扩展已启用仍报缺失问题解决方案
你遇到的报错内容如下:
ERROR: The requested PHP extension json is missing from your system.
ERROR: The requested PHP extension mbstring is missing from your system.
可按以下步骤逐一排查解决:
1. 排查Web端与CLI端PHP版本不一致问题
cPanel默认支持多PHP版本共存,你在面板中配置的扩展可能仅对Web访问生效,命令行运行脚本时调用的是其他版本PHP:
- 新建
phpinfo.php文件到网站根目录,写入代码<?php phpinfo(); ?>,通过浏览器访问该文件,搜索json、mbstring确认扩展实际启用状态,同时记录当前Web端使用的PHP版本号与php.ini配置路径。 - 若脚本通过SSH命令行运行,执行
php -v查看CLI端默认PHP版本,与Web端版本对比:- 若版本不一致,直接指定对应版本运行脚本即可,命令格式为
/usr/local/bin/ea-phpXX /path/to/your/script.php,其中XX替换为Web端的PHP版本号,例如PHP7.4对应ea-php74、PHP8.2对应ea-php82。
- 若版本不一致,直接指定对应版本运行脚本即可,命令格式为
2. 核对站点绑定的PHP版本
- 登录cPanel后台,进入「软件」板块的「选择PHP版本」,确认当前你启用
json、mbstring扩展的PHP版本,与站点绑定的版本一致。 - 进入「多PHP管理器」,勾选你部署脚本的站点,确认分配的PHP版本为你已配置扩展的版本,若不匹配统一切换到目标版本即可。
3. 排查自定义配置覆盖问题
- 检查站点根目录下是否存在
.user.ini或者自定义php.ini文件,排查是否存在disable_extension = json、disable_extension = mbstring这类禁用配置,或扩展加载路径配置错误的问题。 - 部分托管商存在全局PHP扩展禁用规则,即使cPanel面板勾选启用也不生效,可提交技术工单要求服务商确认对应PHP版本的两个扩展已编译安装且未被全局禁用。
4. 排查脚本校验逻辑错误
部分老旧PHP脚本的扩展校验逻辑存在bug,会错误判断扩展状态:
- 在脚本入口处添加如下测试代码:
var_dump(extension_loaded('json')); var_dump(extension_loaded('mbstring'));
- 运行后如果返回
bool(true)说明扩展实际已启用,直接注释掉脚本中原有的扩展校验代码即可正常运行。
内容的提问来源于stack exchange,提问作者Aman
相关产品推荐
相关产品推荐

