è un bug di strtotime dipende dal fatto che trasforma 31/2 che non esiste in 1/3
on line avevo trovato questo che funziona

$base = strtotime(date('m',time()) . '-01 00:00:01');
echo date('m',strtotime('+0 month', $base));
echo date('m',strtotime('+1 month', $base));
echo date('m',strtotime('+2 month', $base));