According to the Excel 2003 documentation, Nper, start_period, end_period, and type are truncated to integers. - this is what the PHP version is doing. In reality, Excel (2013 at least) does not truncate, though the documentation there is slightly different: Payment periods are numbered beginning with 1. - as for 2003 - but no mention of truncation.
Please try 31
for periods in both.
Effectively, "different Excel versions".