sub ?? $decodedToken->user_id ?? null; // --- DB connection: same physical database backend's Database::get('main') // resolves to (confirmed distinct from Database::get('ride') — the getRideStatus // endpoint this replaces has always read from 'main', so the fallback query // below stays on 'main' too, for zero behavior change vs. today). Env var // names match backend/core/Database/Database.php's 'main' entry exactly; // falling back to loction_server's simpler names only if ops sets this box // up differently. Actual values must be confirmed/provisioned by ops. --- $dbname = getenv('DB_PRIMARY_NAME_V2') ?: getenv('dbname'); $dbhost = getenv('DB_PRIMARY_HOST_V2') ?: 'localhost'; $dbuser = getenv('DB_PRIMARY_USER_V2') ?: getenv('USER'); $dbpass = getenv('DB_PRIMARY_PASS_V2') ?: getenv('PASS'); try { $dsn = "mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4"; $con = new PDO($dsn, $dbuser, $dbpass, [ PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8", PDO::ATTR_TIMEOUT => 5, ]); } catch (PDOException $e) { error_log("[ride_server/connect] DB connection failed: " . $e->getMessage()); http_response_code(500); echo json_encode(['status' => 'failure', 'message' => 'A database error occurred.']); exit; }