Fa così perchè è già stato mandato un output al browser. Controlla che non venga mandato nulla prima del setcookie.
Regole del Forum