taskman_error/error.inc.php

45 lines
1.2 KiB
PHP
Raw Normal View History

2022-05-16 14:22:21 +03:00
<?php
function _gamectl_error_handler($errno, $errstr, $errfile, $errline)
{
if($errno == E_STRICT)
return;
$PHP_8_SUPPRESSED = E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE;
$err_rep = error_reporting();
// check if error was suppressed by @
if($err_rep === 0 || $err_rep === $PHP_8_SUPPRESSED)
2022-05-16 14:22:21 +03:00
return;
$err = "Error happened: $errno, $errstr, $errfile, $errline\n";
throw new Exception($err);
}
function _gamectl_exception_handler($e)
{
$lines = preg_split("/\r\n|\n|\r/", $e->getMessage());
$digest = '';
//let's filter out too stack traces which are printed anyway
foreach($lines as $idx => $line)
{
if($idx === 0)
{
$line = 'Exception in ' . $e->getFile() . ':' . $e->getLine() . "\n" . $line;
}
if($idx > 0 && preg_match('~^#\d+\s+~', $line))
2025-02-25 18:10:17 +03:00
continue;
$digest .= $line . "\n";
}
$digest = trim($digest);
$msg = $e . "\n=== ERROR DIGEST ===\n" . $digest . "\n";
2022-05-16 14:22:21 +03:00
$stderr = fopen('php://stderr', 'a');
fwrite($stderr, $msg);
fclose($stderr);
exit(1);
}
set_error_handler("_gamectl_error_handler");
set_exception_handler("_gamectl_exception_handler");