In 32 bit environments, these functions including is_file(), stat() filesize() will not work due to PHPs default integer being signed. So anything above ~2.1 billion bytes you actually get a negative value.
This is actually a bug but I dont think there is an easy workaround. Try to switch to 64 bit.