WordPress站点日志持续重复出现PHP致命错误求助
解决W3 Total Cache引发的PHP致命错误:Call to undefined function get_bloginfo()
这个错误的根源很明确:W3 Total Cache的数据库缓存模块在WordPress核心函数还没完全加载完毕时就尝试执行初始化,导致get_bloginfo()这类核心函数还未定义就被调用了。下面是几个从临时修复到彻底解决的方案,你可以根据情况选择:
临时应急修复(立刻让站点恢复正常)
- 先通过FTP或者主机的文件管理工具,找到
wp-content/plugins/w3-total-cache/这个目录,把它重命名成w3-total-cache-disabled。这样WordPress会自动禁用这个插件,错误应该马上就消失了,先保证站点能正常访问。
彻底解决办法
方案1:重装最新版W3 Total Cache
- 插件禁用后,到WordPress后台的插件管理页面删除它,然后从官方插件市场重新下载安装最新版本。旧版本的插件大概率存在这个加载顺序的bug,新版本应该已经修复了这个问题。
- 安装完成后,别直接导入旧配置,建议一步步重新设置缓存选项,尤其是数据库缓存部分,确保启用时不会再触发加载冲突。
方案2:修改插件代码(适合不想重装的情况)
- 找到
wp-content/plugins/w3-total-cache/DbCache_Wpdb.php文件,定位到db_connect()方法(对应你日志里的第145行附近),在方法开头添加这段代码,强制确保核心函数加载完成后再执行:// 确保WordPress核心函数已加载 if ( ! function_exists( 'get_bloginfo' ) ) { require_once ABSPATH . 'wp-includes/general-template.php'; } - 注意:修改插件文件前一定要先备份,而且插件更新后这个修改会被覆盖,所以这个方法只是临时过渡,长期来看还是方案1更稳妥。
方案3:关闭数据库缓存(如果非必需)
- 如果你的站点对数据库缓存的需求不高,可以直接在W3 Total Cache的设置里找到「数据库缓存」选项,把它关掉。这样就能从根源上避免这个加载冲突问题。
额外排查建议
- 检查你的WordPress核心版本是不是最新的,旧版本的核心加载逻辑可能和新版插件不兼容,及时更新到最新稳定版能减少很多这类兼容性问题。
- 排查其他插件的冲突:暂时禁用除W3 Total Cache外的所有插件,看看错误是否消失,然后逐个启用插件,找到和W3 Total Cache冲突的那个插件,要么更新它,要么更换替代插件。
内容的提问来源于stack exchange,提问作者Hilal Pcnador
相关产品推荐
相关产品推荐

