DebugMode disabled – Nette\InvalidStateException: Cannot send session cache limiter – headers already sent

Failips
Člen | 54
+
0
-

Ahoj,

v našom systéme sa v poslednej dobe objavuje táto chyba:

Nette\InvalidStateException: Cannot send session cache limiter - headers already sent in ../vendor/nette/http/src/Http/Session.php:90

Jediné čo na ňu dočasne zaberie je zapnutie debug módu, ten ale chceme mať vypnutý. Nepomáha ani zmazanie cache.

Máte nejaké rady ako to odstrániť permanentne? Ďakujem

Mabar
Člen | 360
+
0
-

Hlavičky se odesílají v okamžiku zaslání výstupu. Což se může stát třeba i díky bílému znaku před <?php. Měli byste zjistit, kde se vám výstup předčasně odesílá, k tomu vám pomůže Tracy\OutputDebugger.
Případný workaround je zapnout output buffering, ale je to jen side effect na který není dobré se dlouhodobě spoléhat.

Failips
Člen | 54
+
0
-

Mohol by si mi prosím bližšie popísať ako to pomocou Tracy\OutputDebugger odhaliť a zároveň ako to urobiť bez toho aby si ostatní užívatelia systému čokoľvek všimli?

Failips
Člen | 54
+
0
-

Všimol som si, že sa táto chyba vyskytuje na stránkach ktoré v sebe majú {control someControl}, kde someGrid je Ublaboo Datagrid alebo nejaky Form. Tam kde to nieje tak sa táto chyba neprejavuje.

Editoval Failips (12. 12. 2019 8:35)

Mysteria
Člen | 788
+
0
-

Po index.php hodíš za autoload composeru Tracy\OutputDebugger::enable(); a nahoře na stránce se ti objeví seznam, kde co aplikace vypisovala.
Pokud to chceš jenom pro sebe, tak si to budeš muset vypodmínkovat třeba podle IP adresy nebo cookie.