PHP Warning: session_start(): Cannot send session cache limiter

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
tomaass
Člen | 74
+
0
-

Ahoj,

mám webovou prezentaci na produkčním serveru a pravidelně dostávám emailem notifikaci:

[2013–08–05 23:15:08] [2013–08–05 23–15–08] PHP Warning: session_start(): Cannot send session cache limiter – headers already sent (output started at /home/www_root/xyz/app/temp/cache/_Nette.FileTemplate/_Default._layout_wide.latte-70015980450afc03ef37584404c0e082.php:74) in /home/www_root/xyz/libs/Nette/nette.min.php:4729 @ http://www.xyz.cz/neco

Samozřejmě nikde nic před zahájením sešny nevypisuju. Na fóru jsem se dočetl, že za to může BOM. Všechny soubory projektu jsem tedy projel code-checkerem a nechal opravit a přenesl na produkční server. Také jsem smazal cache. Chyba v nezměněné podobě přetrvává a já vůbec nevím, čím a kde to vzniká. Ani nevím, jestli návštěvník vidí to co má, nebo mu stránky havarují.

Editoval tomaass (6. 8. 2013 11:39)

vvoody
Člen | 910
+
0
-

Ladenku tam nemáš?

frosty22
Člen | 373
+
0
-

Uvádíš, že nikde nic před zahájením session nevypisuješ, čili ty startuješ session ručně? Pokud ano, zkus nastavit v configu na „smart“.

tomaass
Člen | 74
+
0
-

vvoody napsal(a):

Ladenku tam nemáš?

V produkčním režimu? U mě na lokálu se to ještě neprojevilo. V produkčním to neumím sledovat, když to ani nehodí exceptionu do souboru.

Editoval tomaass (6. 8. 2013 12:04)

tomaass
Člen | 74
+
0
-

frosty22 napsal(a):

Uvádíš, že nikde nic před zahájením session nevypisuješ, čili ty startuješ session ručně? Pokud ano, zkus nastavit v configu na „smart“.

Sešnu nestartuju ručně. Nechávám to na nette. Tak doufám, že jí startuje ještě před výstupem šablony :)

session:
autoStart: smart
to mám

Editoval tomaass (6. 8. 2013 12:03)

vvoody
Člen | 910
+
0
-

No keď ti chodí mail tak ten mail asi posiela nette čiže tu notice spracúva nette a mal by ju aj logovať ako ladenku do súboru v logs adresári, skús ho pohľadať.

tomaass
Člen | 74
+
0
-

vvoody napsal(a):

No keď ti chodí mail tak ten mail asi posiela nette čiže tu notice spracúva nette a mal by ju aj logovať ako ladenku do súboru v logs adresári, skús ho pohľadať.

mám tam jenom stoletý exceptiony. Nic novýho. Ten mail mi chodí asi každý druhý den, ale v logu nic. Ani v error logu.

frosty22
Člen | 373
+
0
-

Tak to je ono =) Pokud se ti před stolety objevila stejná chyba, tak se vytvořit unikátní hash, který je v tom názvu exception-XX-XX-YYYYYYYY a pokud se objeví stejná chyba tak nette prvně kontroluje, zda-li už není zalogovaná a vytvoří z ní hash, který ty už tam asi máš.

Doporučení – nenechávat staré exception ve složce – projít je, vyřešit a smazat =) Jinak v tomto případě je smaž či stáhni a sám uvidíš že se objeví.

tomaass
Člen | 74
+
0
-

frosty22 napsal(a):

Tak to je ono =) Pokud se ti před stolety objevila stejná chyba, tak se vytvořit unikátní hash, který je v tom názvu exception-XX-XX-YYYYYYYY a pokud se objeví stejná chyba tak nette prvně kontroluje, zda-li už není zalogovaná a vytvoří z ní hash, který ty už tam asi máš.

Doporučení – nenechávat staré exception ve složce – projít je, vyřešit a smazat =) Jinak v tomto případě je smaž či stáhni a sám uvidíš že se objeví.

Aha, OK, děkuju. Já sem je přávě předchvílí smazal, takže už je po nich. škoda. Ale zase budou ;)

Díky. A když budou a nepovede se mi to odhalid, tak sem napíšu i se screenama. Zatim dík

besanek
Člen | 128
+
0
-

Možná takovej hint jak chybu replikovat. Smaž všechny cookies k tvému webu a navštiv stránku, která vyhazuje tenhle warning.

daniel.mejta
Člen | 21
+
0
-

tomaass napsal(a):

Ahoj,

mám webovou prezentaci na produkčním serveru a pravidelně dostávám emailem notifikaci:

[2013–08–05 23:15:08] [2013–08–05 23–15–08] PHP Warning: session_start(): Cannot send session cache limiter – headers already sent (output started at /home/www_root/xyz/app/temp/cache/_Nette.FileTemplate/_Default._layout_wide.latte-70015980450afc03ef37584404c0e082.php:74) in /home/www_root/xyz/libs/Nette/nette.min.php:4729 @ http://www.xyz.cz/neco

Samozřejmě nikde nic před zahájením sešny nevypisuju. Na fóru jsem se dočetl, že za to může BOM. Všechny soubory projektu jsem tedy projel code-checkerem a nechal opravit a přenesl na produkční server. Také jsem smazal cache. Chyba v nezměněné podobě přetrvává a já vůbec nevím, čím a kde to vzniká. Ani nevím, jestli návštěvník vidí to co má, nebo mu stránky havarují.

Zkus vymazat z .php souborů na konci ?>, zkontroluj jestli před session_start() nemáš nějaké echo, odstraň BOM, zkontroluj jestli ti .php soubory nezačínají řádkem/mezerou/čímkoliv jiným než <?php

frosty22
Člen | 373
+
0
-

Uváděl že to projel code-checkrem, takže by tyhle problémy mít neměl https://doc.nette.org/cs/code-checker

tomaass
Člen | 74
+
0
-

Tak, pánové:

Chyba mi mailem přišla znovu. V logu není vůbec nic = žádný výstup laděnky, ani žádný záznam. Hláška je pořád stejná. Liší se jen akce presenteru.

daniel.mejta> ano, tydle začátečnické věci jsem vechny už dávno udělal a sešnu nestartuju ručně. PHP mám všude bez ukončujících značek.

leninzprahy
Člen | 150
+
0
-

S podobným problémem jsem se setkal.
Tehdy to bylo způsobeno tím, že se session sama nenastartovala a když se začal vykreslovat zabezpečený formulář (->addProtection()), zkoušel si do ní uložit svůj token, ale už bylo pozdě. Myslím že pomohlo nastartovat session ručně (session_start() někde v bootstrapu). Ale je to už dloho, tuším ještě nette 0.9.

Mimochodem, jakou verzi nette používáš?

tomaass
Člen | 74
+
0
-

leninzprahy napsal(a):

S podobným problémem jsem se setkal.
Tehdy to bylo způsobeno tím, že se session sama nenastartovala a když se začal vykreslovat zabezpečený formulář (->addProtection()), zkoušel si do ní uložit svůj token, ale už bylo pozdě. Myslím že pomohlo nastartovat session ručně (session_start() někde v bootstrapu). Ale je to už dloho, tuším ještě nette 0.9.

Mimochodem, jakou verzi nette používáš?

No, můžu to zkusit. Zrovna to ty chyby hází na stránkách, kde ani formuláře nejsou. Jsou to pouze „statické“ stránky. Verze mého nette je 2.0.10 bez namespaců.

David Grudl
Nette Core | 8233
+
0
-

Automatické startování session se dělá pomocí autoStart: yes, smart je taková divná výchozí volba.