当WordPress站点上发生致命错误时,会收到电子邮件通知吗?

时间:2016-08-23 作者:ria

当我的wordpress网站出现致命错误或其他错误时,我正在为电子邮件通知添加以下代码。但我重命名加载时没有收到电子邮件。php文件(即发生致命错误时)

do_action( \'shutdown\', $array );
function action_shutdown($array) {
$err = error_get_last();
if ( !$err) {
return;
}
$fatals = array(
E_USER_ERROR => \'Fatal Error\',
E_ERROR => \'Fatal Error\',
E_PARSE => \'Parse Error\',
E_CORE_ERROR => \'Core Error\',
E_CORE_WARNING => \'Core Warning\',
E_COMPILE_ERROR => \'Compile Error\',
E_COMPILE_WARNING => \'Compile Warning\'
);

if (isset($fatals[$err[\'type\']])) {
$msg = $fatals[$err[\'type\']] . \': \' . $err[\'message\'] . \' in \';
$msg.= $err[\'file\'] . \' on line \' . $err[\'line\'];
$headers = "From: [email protected]\\r\\n";
$headers .= "MIME-Version: 1.0\\r\\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\\r\\n";
error_log($msg, 1, "[email protected]", $headers);
}
}
add_action( \'shutdown\', \'action_shutdown\', 10, 1 );
我正在函数中添加此代码。主题的php文件。当现场发生错误时,它将不会进入被调用函数的内部。但是,如果运行时没有错误,它将进入被调用的函数。请告诉我哪里错了或使用了正确的函数。

3 个回复
SO网友:Rarst

我认为你滥用了shutdown 钩WP将其与一起使用register_shutdown_function() 它的目的是处理脚本执行的结束,而不是记录/处理错误。

如果希望以自定义方式处理错误,最好使用通用PHPset_error_handler() 就是为了这个。

SO网友:Xavier Serrano

您的代码有几个错误/问题。

为什么要使用两个do\\u操作(“关机”)do\\u actions是一种挂钩,旨在为某人提供一种方式,使其能够挂钩到WordPress事件驱动流程中,以便执行动作或更改当前动作。这意味着无论在何处看到do\\u action(),都可以钩住并执行代码。这些参数意味着能够使用这些参数来做/更改某些事情。参数由do\\u操作传递给add\\u操作回调函数。

SO网友:Jack Arturo

对于任何感兴趣的人,我发布了一个插件,可以在https://wordpress.org/plugins/fatal-error-notify/. 它与PHP的register_shutdown_function() 处理通知。退房/includes/class-public.php 看看它是如何工作的。

相关推荐

500 Internal Errors

我正在将当前的Eduma主题更新为最新版本(3.0.9.1),目前的版本是3.0.7。我正在运行WordPress 4.7.5。但是,在运行更新时,我得到Update Failed: Internal Server Error 安装过程中的消息。所以我启动了这个过程,它运行了一分钟,然后它就停止了工作,我陷入了维护模式。所以我必须手动删除.maintenance 来自我的服务器的文件。我截图了我在错误中看到的内容。我在WordPress网站上运行了调试模式,这就是我所拥有的[31-May-2017 15: