SuiteCRM首页及登录页出现PHP警告如何排查解决
SuiteCRM XAMPP环境页面警告修复方案
两类警告均为PHP高版本下的兼容性提示,XAMPP默认开启全量错误前端输出才会直接展示在页面,按以下步骤操作即可全部消除:
一、基础操作(先做这两步,80%的场景直接解决问题)
- 全量清理重建系统缓存
- 进入你的SuiteCRM站点根目录,删除
cache目录下除index.html外的所有文件、子文件夹,不要删除cache目录本身 - 登录站点后台,进入「修复」模块,依次执行「快速修复与重建」「修复模板文件」,等待系统重新生成编译缓存即可
- 进入你的SuiteCRM站点根目录,删除
- 调整PHP错误输出配置
打开XAMPP控制面板,点击Apache行的Config按钮,选择PHP (php.ini)打开配置文件:- 搜索
error_reporting配置项,修改为:
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED- 搜索
display_errors配置项,把值改为Off - 保存配置后重启Apache服务,所有非致命错误将不再直接输出到页面,这也是所有Web环境的通用安全配置。
- 搜索
二、残留报错针对性修复
如果做完基础操作还有对应警告,按报错位置单独修改代码即可:
- 首页报错:
Undefined array key "script" in ...MySugar2.tpl.php 第58行
这个是Smarty模板编译时未做数组键存在判断导致的,找到你当前使用主题目录下的tpls/MySugar2.tpl源文件,定位到调用script数组键的位置,给变量加空合并兜底即可,示例:
修改后重新执行一次模板修复重建即可。{* 原写法 *} {$some_arr['script']} {* 修改为 *} {$some_arr['script'] ?? ''} - 登录页报错:
Trying to access array offset on value of type null in ...include/utils.php 第1889行
打开站点根目录下include/utils.php文件,定位到1889行,你会看到直接用变量做数组访问的代码,在访问前增加空值、数组类型判断即可,示例:
保存后再次清理缓存、执行修复即可。// 原写法 $res = $target_var[$idx]; // 修改为 $res = (is_array($target_var) && isset($target_var[$idx])) ? $target_var[$idx] : '';
补充说明:SuiteCRM 7.12.6官方最高兼容PHP版本为7.4,如果你当前XAMPP用的是PHP8.0+版本,后续还可能遇到其他同类兼容性警告,嫌逐个改代码麻烦的话直接把XAMPP的PHP版本切换到7.4即可一次性解决所有兼容问题。
内容的提问来源于stack exchange,提问作者Ilija Rastovic
相关产品推荐
相关产品推荐

