什么错误“PHP致命错误:不能为非对象调用重载函数”是什么意思?

时间:2014-02-20 03:56:43

标签: php wordpress

我在GoDaddy Linux主机上运行WordPress网站。我认为错误PHP Fatal error: Cannot call overloaded function for non-object in wp-includes/class-wp.php on line 529是随机发生的,通常是为了响应POST请求。

  • WordPress版本:3.8
  • PHP版本:5.4.23

文件wp-includes/class-wp.php的第529行是WP类中以下函数的主体:

function init() {
    wp_get_current_user();
}

错误似乎与WooCommerce plugin的存在有某种关系。插件停用时我没有看到错误。

不幸的是,删除WooCommerce不是一个选项,因此我需要了解错误是如何触发并提供解决方案的。问题是我不知道该找什么。

我想了解在一般情况下导致错误的原因如上所述。

  • 任何人都可以提供生成此类错误的PHP代码示例吗?或
  • 解释为什么会发生?

我希望能够使用该信息在WooCommerce的源代码中找到类似的问题。

我快速浏览了PHP的解释器源代码(herehere)并找到了生成错误消息的行,但说实话,这对我没有帮助。

关于不同应用程序中的相同错误的question in SO有一个答案,表明问题是由服务器过载引起的。我认为这不是这种情况。我们没有太多的流量。

different question in WordPress SE提供了两个可能的原因。问题是与启用的备用PHP缓存(APC)相关联,或者问题是由插件引起的。不幸的是,没有人提供实际解决方案或具体原因。

我的情况类似于上面提到的问题:我启用了APC(目前正试图从GoDaddy获取帮助以禁用它),我的测试表明WooCommerce有责任。

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

转到根目录并创建一个php.ini文件并编写以下内容 ;延长= apc.so

并保存。

邻居Wordpress主题有这个问题。

答案 1 :(得分:1)

我能够通过将 php_flag apc.cache_by_default Off 添加到.htaccess

来解决个别网站的问题

答案 2 :(得分:0)

我们发现这与Apache的APC模块有关。要解决它,只需编辑你的php.ini以取消注释apc模块,使其从

读取
extension=apc.so

;extension=apc.so

这将解决问题。

答案 3 :(得分:0)

我有一段时间的白色死亡屏幕。 在此之前相关问题-PHP致命错误:无法在第529行的wp-includes / class-wp.php中为非对象调用重载函数。此问题已通过升级我的godaddy帐户解决。

如上所述,白屏问题可能是插件或APC。 确定它是否为插件的最快方法不是将它们全部停用,然后重新激活逐个 - 而是停用并重新激活一次性 - 插件导致问题,重新激活错误。

那就是说,我想保留这个插件,所以我联系了Godaddy,后者很快就禁用了APC。

我已重新启动插件,一切似乎都很好。 禁用APC的唯一潜在问题是加载时间较慢,但我还没有遇到过这种情况。