如何获得所有 PHP 异常,包括 mysqli 生成的异常和普通 php 异常,并通过电子邮件发送给我?
问题环境
我在我的 ISP 处使用共享服务器,无法访问任何管理类型的 PHP 配置文件。在服务器上,我只有大约一百行 PHP 来对 MySQL 数据库执行查询,如果返回任何行,它会执行一些 SQL UPDATE 命令。这作为 cron 作业每天运行。没有关联的网站(我在该服务器上什至没有网站)。服务器托管一个用于远程连接的数据库,而 php 只是对其执行一些维护。
由于没有“用户”和“网页”来提供反馈,我希望所有错误和异常都通过电子邮件发送给我。
我尝试/研究过的事情
我发现
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
将通常导致返回 FALSE 的 mysqli 错误转换为将写入错误日志的异常。这有帮助。
...我可以使用例如电子邮件发送文本
$email = "my message";
Error_log($email, 1, "myemailaddress@myserver.com", "From: defaultemail@hostingserver.com");
并且我可以通过编写自己的错误处理程序来获取错误的详细信息,例如
function the_error_handler($number, $message, $file, $line, $vars) //putting $vars in shows all the variables the server knows about
{
$email = " An error ($number) occurred on line $line in $file. $message ";
Error_log($email, 1, "myemailaddress@myserver.com", "From: defaultemail@hostingserver.com");
};
并使用它进行设置
set_error_handler('the_error_handler');
最小的,可重现的例子
在下面的代码中,我将所有这些放在一起并故意引入了两个错误(试图回显一个不存在的变量并试图在一个不存在的表上执行查询。
翻阅古今