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