You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更换主机后出现array_push、headers already sent报错 无法登录WordPress后台求助

报错原因及修复方案

两个报错存在直接关联,核心问题出在session购物车的初始化逻辑错误:

  1. Warning: array_push() expects parameter 1 to be array, string given报错直接原因:代码中直接将$_SESSION['cart']赋值为空字符串,而array_push()方法仅支持对数组类型变量操作,类型不匹配触发警告。
  2. Cannot modify header information是连锁报错:第一个警告提前输出到了页面内容中,导致WordPress登录流程后续需要发送的header头被阻断,最终无法进入后台。
    你更换主机后才出现问题,是因为新主机的PHP错误提示等级配置更高,之前的主机大概率默认隐藏了warning级别的报错,问题早就存在只是没有暴露。

修复后的代码

将你主题functions.php里对应的代码段替换为如下内容即可:

function register_my_session() {
    if (!session_id()) {
        session_start();
    }
    // 仅当购物车未初始化/非数组格式时初始化为空数组,避免每次请求清空购物车
    if (!isset($_SESSION['cart']) || !is_array($_SESSION['cart'])) {
        $_SESSION['cart'] = [];
    }
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
       array_push($_SESSION['cart'], $_POST);
    }
}
add_action('init', 'register_my_session');

调整说明

  • 删掉了原来直接给$_SESSION['cart']赋值空字符串的错误逻辑,改为仅当变量未初始化或者不是数组时才赋值为空数组,既解决了array_push的类型匹配问题,也避免了每次请求都清空购物车的逻辑bug
  • 空数组[]写法兼容所有PHP7及以上版本,和传统array()写法效果完全一致

验证步骤

通过FTP或主机文件管理器进入站点wp-content/themes/pillshope/目录,编辑functions.php替换对应代码后,清除浏览器缓存即可正常登录WordPress后台,两个报错会全部消失。

内容的提问来源于stack exchange,提问作者Robert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:15:03