PHP致命错误:无法为wp-includes/capabilities.php中的非对象调用重载函数

时间:2012-03-01 作者:pankajbatra

我在apache日志中遇到了太多以下错误。

PHP Fatal error: Cannot call overloaded function for non-object in wp-includes/capabilities.php on line 1187

这是函数current\\u user\\u can($capability)的内部,第1187行如下所示:

$current_user = wp_get_current_user();
我不知道问题出在哪里?

3 个回复
最合适的回答,由SO网友:SickHippie 整理而成

此问题通常源于PHP配置问题、APC缓存和/或对不兼容XML库的调用。

据我所见,它通常是php 5.2的组合。X和缓存。如果您在站点上使用缓存,请尝试从APC/memcached缓存切换到磁盘缓存,看看是否已清除。9/10次,在服务器级别禁用APC也会将其清除(如果您具有完全的服务器访问权限)。请记住,您的主机可能在默认情况下启用了APC。

同时,确保您的wp-config.php:

/**
 * This will log all errors notices and warnings to a file called debug.log in
 * wp-content (if Apache does not have write permission, you may need to create
 * the file first and set the appropriate permissions (i.e. use 666) ) 
 */
define(\'WP_DEBUG\', true);
define(\'WP_DEBUG_LOG\', true);
define(\'WP_DEBUG_DISPLAY\', false);
@ini_set(\'display_errors\',0);
这将打开WP调试,并将输出到/WP内容/调试。日志它不是一个完整的堆栈跟踪,但它可以防止这些错误显示给最终用户,并可以记录您没有看到的其他错误。您还可以安装调试栏插件,它将让您(仅限管理员)看到错误/通知、php的内存使用情况(它可以告诉您是否需要增加限制)、查询数(如果SAVE_QUERIES 设置)用于生成页面,等等。您还可以(如果您有服务器访问权限的话)使用XDebug设置PHP,这将生成关于PHP错误的完整堆栈跟踪。

我希望其中的一些至少为您指明了正确的方向。

SO网友:Celso

嘿,我找到答案了this forum.

“我只是想分享我是如何解决这个问题的。在cpanel控制面板中,选择“选择PHP版本”。然后我选择“PHP版本5.5”。然后单击“保存”

为我工作。这似乎是godaddy php配置问题。我的错误消息是针对一个line-in用户的。php不是功能。

SO网友:anmari

我发现,通常这些功能问题最终会出现在某个插件中(很难找到,因为错误看起来像是在核心wordpress中)。

非对象部分可能意味着wp尚未设置$current\\u用户对象-可能意味着在wordpress操作中过早调用功能检查。

重载部分通常意味着wp试图获取的是一个用户元值(这是一种功能)。

最好的方法是一个接一个地禁用插件,直到消息消失——然后你至少知道它是哪个插件。如果你不知道它是什么时候发生的,那就有点难了——你能说出它在哪一页上,或者它发生时人们在做什么吗?

然后看看插件wordpress的功能-可能是操作序列中的早期添加操作?http://codex.wordpress.org/Plugin_API/Action_Reference

(也可以尝试在每个插件上搜索该消息的后面部分?

例如:“wp includes/capabilities.php on line 1187”给了我:http://support.dev7studios.com/discussions/nivo-slider-wordpress-plugin/544-fatal-error

告诉我们进展如何

结束

相关推荐