'HS256', 'typ' => 'JWT'])); $body = base64url_encode(json_encode($payload)); $sig = base64url_encode(hash_hmac('sha256', "$header.$body", $secret, true)); return "$header.$body.$sig"; } // ── Main ── $secret = getJwtSecret(); if (empty($secret)) { echo json_encode(['error' => 'JWT secret not found in any .env', 'files_checked' => $loadedFiles, 'jwt' => '']); // Do not exit with 1 so Node.js can print the JSON error exit(0); } $driverId = $argv[1] ?? '999999'; $jwt = generate_jwt($secret, [ 'sub' => (string)$driverId, 'role' => 'driver', 'iat' => time(), 'exp' => time() + 86400, ]); echo json_encode(['driver_id' => $driverId, 'jwt' => $jwt]);