Se que puede sonar algo tonto, pero como esta el horario GMT del servidor donde pones tus archivos?
Eso podria ocasionar que se destruyeran antes de tiempo
Aunque tambien podrias intentar ponerle el tiempo de expiracion de esta forma
Código PHP:
setcookie("nombre","valor",time()+3600*24*90);
Saludos