no, sono un deficiente io che ho guardato il codice e non me ne sono accorto.
Hai un echo prima del set_cookie, nessun output può essere inviato prima degli header (e quindi anche dei cookie)