The symbolic solution suffers from branch cut discontinuities. Here is a way to correct it:
phiSymbolic[t_] =
DSolveValue[{eqd, \[Phi][0] == 0, \[Phi]'[0] == \[Omega]}, \[Phi][t],
t] /. {R -> 5, M -> 20, m -> 1, v -> 5, \[Omega] -> 1}
FunctionDiscontinuities[phiSymbolic[t], t]
jump = Limit[phiSymbolic[t], t -> Pi/2, Direction -> "FromAbove"] -
Limit[phiSymbolic[t], t -> Pi/2, Direction -> "FromBelow"]
phiSymbolicCorrected[t_] =
phiSymbolic[t] - jump*Ceiling[(t - Pi/2)/(Pi)];
Plot[phiSymbolicCorrected[t], {t, -Pi, 50 \[Pi]}, Exclusions -> None]
Compare the corrected symbolic solution on a much larger interval with the corresponding numerical solution.