@@ -481,6 +481,12 @@ function logError(Throwable $error, string $action, ?Logger $logger, Route $rout
481481 $ route = $ utopia ->match ($ request );
482482 logError ($ error , "httpError " , $ logger , $ route );
483483
484+ $ version = (string ) Http::getEnv ('OPR_PROXY_VERSION ' ) ?: 'UNKNOWN ' ;
485+ $ message = $ error ->getMessage ();
486+ $ file = $ error ->getFile ();
487+ $ line = $ error ->getLine ();
488+ $ trace = $ error ->getTrace ();
489+
484490 switch ($ error ->getCode ()) {
485491 case 400 : // Error allowed publicly
486492 case 401 : // Error allowed publicly
@@ -500,20 +506,24 @@ function logError(Throwable $error, string $action, ?Logger $logger, Route $rout
500506 $ code = 500 ; // All other errors get the generic 500 server error status code
501507 }
502508
503- $ output = [
504- 'message ' => $ error ->getMessage (),
505- 'code ' => $ error ->getCode (),
506- 'file ' => $ error ->getFile (),
507- 'line ' => $ error ->getLine (),
508- 'trace ' => $ error ->getTrace (),
509- 'version ' => Http::getEnv ('OPR_PROXY_VERSION ' , 'UNKNOWN ' )
509+ $ output = ((Http::isDevelopment ())) ? [
510+ 'message ' => $ message ,
511+ 'code ' => $ code ,
512+ 'file ' => $ file ,
513+ 'line ' => $ line ,
514+ 'trace ' => \json_encode ($ trace , JSON_UNESCAPED_UNICODE ) === false ? [] : $ trace , // check for failing encode
515+ 'version ' => $ version
516+ ] : [
517+ 'message ' => $ message ,
518+ 'code ' => $ code ,
519+ 'version ' => $ version
510520 ];
511521
512522 $ response
513523 ->addHeader ('Cache-Control ' , 'no-cache, no-store, must-revalidate ' )
514524 ->addHeader ('Expires ' , '0 ' )
515525 ->addHeader ('Pragma ' , 'no-cache ' )
516- ->setStatusCode (\intval ( $ code) );
526+ ->setStatusCode ($ code );
517527
518528 $ response ->json ($ output );
519529 });
0 commit comments