Headers are dealt with before there is any other output, so if you write something out then PHP can't properly send headers afterwards. At some point in your code you are giving HEAD instructions which hence fails. (There's technical reasons for this, like redirects and so forth)