2022-05-16 14:22:21 +03:00
|
|
|
<?php
|
|
|
|
|
|
|
|
function _gamectl_error_handler($errno, $errstr, $errfile, $errline)
|
|
|
|
{
|
|
|
|
if($errno == E_STRICT)
|
|
|
|
return;
|
|
|
|
|
|
|
|
// @ sign temporary disabled error reporting
|
|
|
|
if(error_reporting() == 0)
|
|
|
|
return;
|
|
|
|
|
|
|
|
$err = "Error happened: $errno, $errstr, $errfile, $errline\n";
|
|
|
|
throw new Exception($err);
|
|
|
|
}
|
|
|
|
|
|
|
|
function _gamectl_exception_handler($e)
|
|
|
|
{
|
2023-11-12 15:33:54 +03:00
|
|
|
$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 && preg_match('~^#\d+\s+~', $line))
|
|
|
|
break;
|
|
|
|
$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");
|
|
|
|
|