Cannot send header after HTTP headers have been sent
- stanley
- Člen | 22
Ahoj,
na jednom starším Nette projektu (Nette version 2.0-dev 5bdf5b0 released on 2010–11–12) se potýkáme se zvláštním problémem. V presenteru se v metodě beforeRender volá metoda $this->getHttpResponse->setHeader(…). V 98% případů to vše funguje bez problémů, někdy se ale stane, že dojde k chybě „Cannot send header after HTTP headers have been sent“… – výstup údajně začal kdesi uvnitř šablony, kde nic zajímavého není (snad jedině to, že to většinou vyjde do nějakého JavaScriptu, ale to považuju za náhodu).
Není mi jasné, jak může dojít k nějakému výstupu v šabloně v metodě beforeRender. Díval jsem se na podobná témata na fóru a problém s BOM v tom není. Navíc se to dá jen velice špatně reprodukovat, protože to prakticky vždycky funguje a netušíme co je spouštěč. Dá se to „fixnout“ tím, že nastavím output_buffering PHP na nějakou vysokou hodnotu, ale to moc neřeší příčiny, jen následky, a má to svá negativa, ale máme vyzkoušeno že to pomáhá.
Setkal jste se s tím někdo? Díky.
- David Matějka
- Moderator | 6445
Nekdy to zpusobuje startovani session ze sablony (treba vypisovani info o uzivateli nebo vykreslovani formu s addprotection). zkus zapnout startovani session automaticky, pripadne je startuj rucne v dotcenych presenterech