WordPress KingComposer插件访问null值数组偏移报错如何解决
WordPress KingComposer插件
Trying to access array offset on value of type null报错修复 报错信息:
Notice: Trying to access array offset on value of type null
报错文件:/home/wouogkqedr4z/public_html/wp-content/plugins/kingcomposer/includes/kc.front.php
报错行号:第566行
报错原因
该报错是PHP 7.4及以上版本的典型兼容性报错,触发逻辑如下:
- 代码先执行
$screens = json_decode( str_replace( '', '"', $code ), true );解析JSON内容,当传入的$code为空、JSON格式损坏/不合法时,json_decode会返回null`,而非代码预期的数组结构 - 第566行直接对
$screens做['kc-css']下标访问,没有提前判断$screens本身是否为有效数组,相当于在null值上取数组键,直接触发该Notice级错误 - 这类Notice错误不会中断程序执行,但会在页面暴露服务器绝对路径、插件结构等敏感信息,既影响访客体验也存在安全风险
修复方案
代码兼容修复(根治方案,不影响原有功能)
打开报错对应的kc.front.php文件,定位到第566行,原判断逻辑为:
if (is_array( $screens['kc-css'])) { kc_screen_sort ($screens['kc-css']); foreach ($screens['kc-css'] as $screen => $groups) { $css_array = array(); $css_code_itm = '';
将判断条件增加前置校验,修改为:
// 增加$screens类型校验、键存在校验,避免null值访问报错 if (is_array($screens) && isset($screens['kc-css']) && is_array( $screens['kc-css'])) { kc_screen_sort ($screens['kc-css']); foreach ($screens['kc-css'] as $screen => $groups) { $css_array = array(); $css_code_itm = '';
注意:该修改属于插件核心文件改动,后续如果升级KingComposer插件,改动会被覆盖,升级后若报错复现重新添加校验即可。
前台报错屏蔽(快速止血方案)
如果暂时无法修改插件代码,直接修改WordPress根目录下的wp-config.php配置文件,找到调试相关配置项,替换为以下内容:
// 关闭前台报错显示 define( 'WP_DEBUG', false ); define( 'WP_DEBUG_DISPLAY', false ); // 保留报错日志记录到服务器,方便后续排查问题 define( 'WP_DEBUG_LOG', true );
配置生效后所有PHP报错都不会直接展示在站点前台,不会影响访客正常访问,报错内容会统一写入/wp-content/debug.log文件供管理员排查。
插件版本升级
该报错本质是旧版KingComposer未做高版本PHP兼容导致,如果当前使用的KingComposer版本不是官方最新适配版,直接升级插件到最新版本,官方更新通常会修复这类已知兼容问题。
内容的提问来源于stack exchange,提问作者Megha Naik
相关产品推荐
相关产品推荐

