PHP警告:call_user_func_array()期望参数1为有效的回调,找不到函数'remove_wpcf7'或无效的函数名称

时间:2018-08-18 15:08:17

标签: php wordpress vps google-authentication mod-fcgid

为这个广泛的问题表示歉意,但我目前对错误日志条目并不十分熟悉。任何有关从哪里开始相关研究的指示,将不胜感激。

在过去的12个月中,我安装了Google Authenticate插件,该插件安装在我工作的WordPress驱动的电子商务网站上。直到最近的VPS和WordPress更新,插件才出现问题。由于上述更新,Google身份验证插件无法识别任何输入的代码。我不确定该错误是由WordPress更新还是VPS本身触发的。

然后我在尝试使用Google身份验证插件时检查了error_log并看到了以下条目:

mod_fcgid: stderr: PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'remove_wpcf7' not found or invalid function name in /var/www/vhosts/example.com/httpdocs/wp-includes/class-wp-hook.php on line 286, referer: https://www.example.com/wp-admin/plugins.php

问题排查

作为标准,我停用了所有插件(WooCommerce插件除外)以及我创建的WordPress主题。然后,我仅激活了WordPress的Twenty Seventeen主题。错误仍然存​​在。让我想知道到底是什么引起了问题。

我可以看到有对WordPress核心文件的引用。也许有些不兼容?

任何有关此的指令,将不胜感激...即使只是帮助我扩展此问题。

3 个答案:

答案 0 :(得分:1)

在代码中查找对“ remove_wpcf7”的任何引用,并在filter / hook中分配find方法。 在这种情况下,您可以找到例如错误调用的类中的方法。例如:add_filter('filter_name', 'method');。您可以例如通过添加:add_filter('filter_name', array($this, 'method'));或如果方法是静态的:add_filter('filter_name', array(CLASSNAME::class, 'method'));

来修复。

希望对您有帮助

===

更新

编辑wp-includes / class-wp-hook.php第73行并添加:

    public function add_filter( $tag, $function_to_add, $priority, $accepted_args ) {
        if ($function_to_add === 'remove_wpcf7') {
            throw new \Exception('Exception');
        }
        [...]
    }

跟踪此未捕获的异常(如果可以使用xdebug扩展会更好),您将看到行正在创建此过滤器。

答案 1 :(得分:0)

尝试将此功能添加到您的WP中。

以下是添加到主题的function.php文件中的代码:

function remove_wpcf7(){
}

答案 2 :(得分:0)

最终找到了解决方案……它与服务器时间设置有关。

如果其他任何人的Google身份验证功能遇到类似问题,则需要确保服务器的时间设置与“ Internet的时钟”同步。

  1. 登录到您的VPS;
  2. 前往Tools & Settings > General Settings > System Time;
  3. 在这里,您应该拥有一个类似于以下内容的屏幕:

    enter image description here

  4. 确保已取消选择Date & Time > Update system time

  5. 确保已选择了Network time > Synchronize system time
  6. 然后在Network time > Domain name or IP中,输入3.pool.ntp.org并选择“确定”。这是我需要解决的步骤,以解决自己的问题。