InvalidStateException na produkčním serveru
- symmetry
- Člen | 71
Zdravím, chtěl bych se zeptat, zda někdo netuší, co by mohlo způsobovat
níže uvedenou hlášku?
Na localhostu se neprojevuje, na produkčním serveru ano, snažil jsem se
vypnout
register globals pomocí htaccess direktivy php_flag register_globals
off
Ale bohužel se stejným výsledkem.
Minimální konfigurace je splněna, tak jsem měl za to, že by takovýto
problém neměl nastat, viz:
http://preview.webcorporate.cz/…/checker.php?…
Díky za každou radu.
Fatal error: Uncaught exception ‚InvalidStateException‘ with message ‚Cannot send session cache limiter – headers already sent (output started at /home/www/webcorporate.cz/preview/travel_agency/admin/db_connect.php:29)‘ in /home/www/webcorporate.cz/preview/travel_agency/admin/libs/nette-0.9-PHP-5.2/Nette/Web/Session.php:117 Stack trace: #0 /home/www/webcorporate.cz/preview/travel_agency/admin/libs/nette-0.9-PHP-5.2/Nette/Web/Session.php(346): Session->start() #1 /home/www/webcorporate.cz/preview/travel_agency/admin/libs/nette-0.9-PHP-5.2/Nette/Forms/Form.php(244): Session->getNamespace(‚Nette.Forms.For…‘) #2 /home/www/webcorporate.cz/preview/travel_agency/admin/index.php(12): Form->addProtection(‚Rozpozn??n poku…‘) #3 {main} thrown in /home/www/webcorporate.cz/preview/travel_agency/admin/libs/nette-0.9-PHP-5.2/Nette/Web/Session.php on line 117
Editoval symmetry (22. 11. 2009 18:01)
- Ondřej Mirtes
- Člen | 1536
Výstup ti začíná v db_connect.php na řádce 29, tak se podívej, co se tam vypisuje.
- Ondřej Brejla
- Člen | 746
Tak nám ho sem pastni a označ, který že řádek je ten 29…nebo zkus jít do hloubky, něco nekálého se ti tam děje ;-)
- Ondřej Mirtes
- Člen | 1536
Já tipuji, že na řádku 29 bude připojení k databázi a to vyhodí nějaký error či výjimku.
- lucass
- Člen | 89
Já toto včera řešil půl dne. Nějak mi nejde do hlavy, proč v DEVELOPMENT módu při vypisování na výstup před session neva, ale v PRODUCTION ano (na localhostu mi to prostě fungovalo bez problémů, po zkopírování na server jsem musel i při naprosto stejném nastavení PHP debugovat). A nejhorší je, že hodí Internal Server Error:) Jestli mi někdo dokáže objasnit tu session fíčurku, budu rád.
Jinak pro symmetry: v boostrapu si nastav toto:
<?php
...
// Step 2: Enable Nette\Debug
// for better exception and error visualisation
Debug::enable(Debug::DEVELOPMENT);
Debug::enableProfiler();
Debug::$strictMode = TRUE;
// nastaveni modu pro vyvoj
Environment::loadConfig(APP_DIR . '/config.ini');
// Step 3: Get the front controller
$application = Environment::getApplication();
$application->catchExceptions = FALSE;
...
?>
To ti helfne při hledání problému. A pokud je to o session jako u mě, nastartuj ji také v boostrapu, jak tu už psali kluci.
<?php
Environment::getSession()->start();
?>
Dej to např. za loadConfig().