Проблема в том, что в каждом месяце может быть разное количество дней. Вопрос в том, что вы делаете, когда хотите увеличить дату на 1 месяц. Согласно документации PHP, если вы используете 31 января (или 30 января) и добавляете 1 месяц, каково ожидаемое поведение?
В феврале всего 29 дней. Вы хотите установить последний день месяца? Как правило, безопаснее увеличиваться на определенное количество дней, если это то, что вы ищете, или статическую дату, основанную на текущей дате. Не зная, чего вы пытаетесь достичь, увеличивая свой месяц, сложно сказать, как следить за ошибкой.
EDIT:
Как кто-то упоминает в аналогичном посте, прокомментированном Майком Б выше, вы, вероятно, захотите сделать что-то, где вы (в псевдокоде):
1) Use cal_days_in_month() for the next month and save that number to a variable x
2) If x >= current billing DOB, increment and be done
3) DateTime::modify('last day') (havent used this before but something along these lines) to set the date to the last date of the next month (set it to the 1st of the next month, then last day?)
Стоит отметить, что если вы используете здесь переменную в качестве нового значения выставления счета, вы уничтожите свое первоначальное значение. Я бы сохранил дополнительное значение БД, которое является «первой датой выставления счета» или просто «billing_day_of_month» или что-то в этом роде, и использую это для определения дня месяца, на который вы должны смотреть