Debug bar: Cannot set cookie
- Fanda
- Člen | 39
PHP 5.3.10
Nette 2.0.1
Dneska mi laděnka vyhodila chybu přímo v panelu (Error: Nette\Security\Diagnostics\UserPanel):
exception 'Nette\InvalidStateException' with message 'Cannot set cookie after HTTP headers have been sent (output started at C:\Server\www\Netaps\website\temp\cache\_Nette.FileTemplate\_Default.default.latte-872af1c0936ff9258ab7282e5894a23d.php:110).' in C:\Server\www\Netaps\website\libs\Nette\Http\Response.php:288
Stack trace:
#0 C:\Server\www\Netaps\website\libs\Nette\Http\Session.php(583): Nette\Http\Response->setCookie('PHPSESSID', '1m55piaiej8b4ko...', 0, '/', '', false, true)
#1 C:\Server\www\Netaps\website\libs\Nette\Http\Session.php(139): Nette\Http\Session->sendCookie()
#2 C:\Server\www\Netaps\website\libs\Nette\Http\SessionSection.php(63): Nette\Http\Session->start()
#3 C:\Server\www\Netaps\website\libs\Nette\Http\SessionSection.php(111): Nette\Http\SessionSection->start()
#4 C:\Server\www\Netaps\website\libs\Nette\Http\UserStorage.php(190): Nette\Http\SessionSection->__get('identity')
#5 C:\Server\www\Netaps\website\libs\Nette\Http\UserStorage.php(76): Nette\Http\UserStorage->getSessionSection(false)
#6 C:\Server\www\Netaps\website\libs\Nette\Security\User.php(131): Nette\Http\UserStorage->isAuthenticated()
#7 C:\Server\www\Netaps\website\libs\Nette\Security\Diagnostics\templates\UserPanel.tab.phtml(8): Nette\Security\User->isLoggedIn()
#8 C:\Server\www\Netaps\website\libs\Nette\Security\Diagnostics\UserPanel.php(45): require('C:\Server\www\N...')
#9 C:\Server\www\Netaps\website\libs\Nette\Diagnostics\Bar.php(62): Nette\Security\Diagnostics\UserPanel->getTab()
#10 C:\Server\www\Netaps\website\libs\Nette\Diagnostics\Debugger.php(369): Nette\Diagnostics\Bar->render()
#11 [internal function]: Nette\Diagnostics\Debugger::_shutdownHandler()
#12 {main}
Na řádku, kde začíná výpis, mám toto:
<span class="date">{!strftime('%d<br />%b', strtotime($status->created_at))}</span>
což nette přeloží na toto:
<span class="date"><?php echo strftime('%d<br />%b', strtotime($status->created_at)) ?></span>
Před i po tomto řádku jsou další výstupy (echo), které by měly
odeslání headers ovlivnit stejně. Pokud obsah řádku v šabloně
odstraním, chyba se posune na další řádek šablony. Cookies ani autentizaci
v aplikaci nepoužívám. Vidíte někde možnou příčinu?
Díky.
Editoval Fanda (19. 3. 2012 9:06)
- David Grudl
- Nette Core | 8228
Problém je v tom, že se session nastartuje pozdě. Nastav v config.neon
u session hodnotu autoStart: smart
. Bude defaultní
v Nette 2.0.2.
- Bumerank
- Člen | 30
pokouším se zprovoznit projekt na hostingu a komponenta gridito, resp. její flashMessage vyhodí chybu Nette\InvalidStateException
Cannot set cookie after HTTP headers have been sent na tomto řádku:
<?php
$grid->flashMessage("...");
?>
když jsem config.neon nastavil session: smart, tak to přestalo dělat a funguje to, ale pouze v Google Chrome – Firefox má ten problém stále…
Editoval Bumerank (6. 5. 2012 21:38)
- Bumerank
- Člen | 30
code-checker našel a opravil pouze pár zapomenutých ukončovacích značek „?>“ a dělá to stále to samé :(
..navíc jsem teď přišel na problém, který možná s Nette nesouvisí – v jedné funkci volám get_headers($url) a i když cílovou URL nelze načíst, tak mi to pouze na hostingu vrátí HTTP kód 200
Editoval Bumerank (6. 5. 2012 22:52)
- Bumerank
- Člen | 30
pro doplnění:
- PHP 5.3.10–1~dotdeb.1
- Apache
- Nette Framework 2.0 (revision 013c8ee released on 2012–02–03)
..podle Requirements Checkeru splňuje nejen minimální, ale úplně
všechny požadavky na provoz Nette
vyzkoušena i aktualizace Nette – bez úspěchu
Editoval Bumerank (6. 5. 2012 23:36)