sinceramente non saprei dirti il motivo per cui si comporti così, però ti consiglio di provare con is_file() che olòtre a verificare se il file esiste verifica inoltre la sua integrità...

per il resto..