扩展默认 php 错误和 error_log

Extending the default php errors and error_log

我想知道是否有人知道更改错误消息登录的默认方式的方法 PHP。希望这可以应用于所有消息、致命错误、警告等,以及任何时候我的脚本调用 error_log.

目前默认错误消息在日志中显示为

[19-Feb-2017 15:38:42 America/Vancouver] Could not post employee data - no rows submitted
[20-Feb-2017 11:12:34 America/Toronto] PHP Warning:  array_splice() expects parameter ...

但是,如果我可以让它还包括我为每个用户存储在 $_SESSION 中的一些变量,例如用户的登录名和公司,那将对我大有裨益。因此,例如错误可能会像下面这样输出

[19-Feb-2017 15:38:42 America/Vancouver] [CompanyXYZ/bob_smith] Could not post employee data - no rows submitted
[20-Feb-2017 11:12:34 America/Toronto] [OtherCompany/jimbo_redneck] PHP Warning:  array_splice() expects parameter ...

PHP的世界里有这样的东西吗?

你可以create your own error handling routine。您应该能够将您想要的任何数据添加到错误消息中。像这样的事情应该让你开始:

<?php
function my_handler($errno , $errstr, $errfile, $errline, $errcontext)
{
    $msg = "Hey I got an error of type $errno ($errstr) from $errfile line $errline!";
    $msg .= "Here's some more info: $_SESSION[foo]";
    error_log($msg);
    return true;
}
set_error_handler("my_handler");

致命错误仅由语法错误等代码问题引起。它们不会发生在用户身上,因此您无需担心会被它们捕获。

注意 things change considerably in PHP 7.