$error['file'], 'line' => $error['line'] ]); if (ob_get_level()) ob_clean(); header('HTTP/1.1 500 Internal Server Error'); header('Content-Type: application/json'); echo json_encode([ 'error' => 'Internal Server Error', 'message' => 'Service temporarily unavailable', 'timestamp' => date('c') ]); exit; } }); // Catch uncaught exceptions set_exception_handler(function($e) { logError('EXCEPTION: ' . $e->getMessage(), [ 'file' => $e->getFile(), 'line' => $e->getLine() ]); if (ob_get_level()) ob_clean(); header('HTTP/1.1 500 Internal Server Error'); header('Content-Type: application/json'); echo json_encode([ 'error' => 'Internal Server Error', 'message' => 'Service temporarily unavailable', 'timestamp' => date('c') ]); exit; }); require '../vendor/autoload.php'; $configuration = [ 'settings' => [ 'displayErrorDetails' => false, 'addContentLengthHeader' => false, ], ]; $c = new \Slim\Container($configuration); // Slim error handler $c['errorHandler'] = function ($c) { return function ($request, $response, $exception) use ($c) { logError('FRAMEWORK ERROR: ' . $exception->getMessage(), [ 'file' => $exception->getFile(), 'line' => $exception->getLine() ]); return $response->withStatus(500) ->withHeader('Content-Type', 'application/json') ->withJson([ 'error' => 'Internal Server Error', 'message' => 'Service temporarily unavailable', 'timestamp' => date('c') ]); }; }; $app = new \Slim\App($c); //Configurations foreach (glob("config/*.php") as $config){ require_once $config; } //Functions foreach (glob("lib/*.php") as $lib){ require_once $lib; } //Load FileMaker Controllers //App Breaks here because no Services class present foreach (glob("controllers/*.php") as $controller){ require_once $controller; } //Require Middlewares foreach (glob("middlewares/*.php") as $middleware){ require_once $middleware; } //Require Jobs foreach (glob("jobs/*.php") as $job){ require_once $job; } //Require Routes foreach (glob("routes/*.php") as $route){ require_once $route; } //Run application $app->run();