PHP - Log stacktrace for warnings?

Viewed 11673

Is it possible to log stacktraces for php warnings? Or catch a warning and error_log() it?

There's some code causing warnings in my error log, but it's impossible to know what's causing these warnings without knowing the stack trace.

4 Answers

Here you go:

class WarningWithStacktrace extends ErrorException {}
set_error_handler(function($severity, $message, $file, $line) {
    if ((error_reporting() & $severity)) {
        if ($severity & (E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE)) {
            $ex = new WarningWithStacktrace($message, 0, $severity, $file, $line);
            echo "\n" . $ex . "\n\n";
            return true;
        } else {
            throw new ErrorException($message, 0, $severity, $file, $line);
        }
    }
});

Errors/exceptions are thrown as usual, notices/warnings are printed only.

PS: Strict and other warning levels are not addressed, modify the code if needed...

Related