Zapeklitá chyba – An error occurred while executing error-presenter

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

Přiznám se, že nevím, co je za problém. Na webu mám jen jedno místo, kde je nějaký formulář, no a ten se občas zobrazí správně, a občas místo něj vyskočí error 500. Promazal jsem cache, nepomohlo. V error logu je:

[2014–08–11 13–23–04] PHP Warning: session_start(): Cannot send session cache limiter – headers already sent (output started at /var/www/virtual/novyhrozenkov.cz/htdocs/temp/cache/_Nette.FileTemplate/_templates._layout.latte-c5402eafb3820d6981b5205259824387.php:28) in /var/www/virtual/novyhrozenkov.cz/htdocs/libs/Nette/Http/Session.php:105 @ http://vu2015.virt6.inext.cz/…telna/svetla

[2014–08–11 13–23–04] Nette\Application\ApplicationException: An error occurred while executing error-presenter in /var/www/virtual/novyhrozenkov.cz/htdocs/libs/Nette/Application/Application.php:156 @ http://vu2015.virt6.inext.cz/…telna/svetla @@ exception-2014–08–11–13–23–04-d873673d779ead1e176ab02ac887490d.html

V administraci webu, kde mam plný pytel formulářů, problém není…

Majkl578
Moderator | 1364
+
0
-

Koukni se do té zkompilované šablony, kde ti to píše, že začal výstup (temp/cache/_Nette.FileTemplate/_templates._layout.latte-c5402eafb3820d6981b5205259824387.php:28). Podle toho zjistíš, co to způsobuje. Každopádně se ti tam posílá nějaká hlavička moc pozdě – až když začal výstup dat.

slawe
Člen | 11
+
0
-

Dávám kopii prvních 28 řádků zkomprimované šablony, poslední 28 řádek, o kterém se píše, je volání CSS stylů

<?php //netteCache[01]000390a:2:{s:4:"time";s:21:"0.58801500 1407754420";s:9:"callbacks";a:2:{i:0;a:3:{i:0;a:2:{i:0;s:19:"Nette\Caching\Cache";i:1;s:9:"checkFile";}i:1;s:68:"/var/www/virtual/novyhrozenkov.cz/htdocs/app/templates/@layout.latte";i:2;i:1407717146;}i:1;a:3:{i:0;a:2:{i:0;s:19:"Nette\Caching\Cache";i:1;s:10:"checkConst";}i:1;s:25:"Nette\Framework::REVISION";i:2;s:30:"c0332ac released on 2013-03-08";}}}?><?php

// source file: /var/www/virtual/novyhrozenkov.cz/htdocs/app/templates/@layout.latte

?><?php
// prolog Nette\Latte\Macros\CoreMacros
list($_l, $_g) = Nette\Latte\Macros\CoreMacros::initRuntime($template, 'xng7rz2th2')
;
// prolog Nette\Latte\Macros\UIMacros

// snippets support
if (!empty($_control->snippetMode)) {
	return Nette\Latte\Macros\UIMacros::renderSnippets($_control, $_l, get_defined_vars());
}

//
// main template
//
?>
<!DOCTYPE html>
<html lang="cs">
    <head>
        <meta charset="UTF-8" />
	<meta name="description" content="" />

	<title>Nový Hrozenkov</title>

	<link rel="stylesheet" media="screen,projection,tv" href="<?php echo htmlSpecialChars($basePath) ?>/css/screen.css" />
Majkl578
Moderator | 1364
+
0
-

Hmm, to nevypadá úplně relevantně. :)
Každopádně, když se podívám na ten web, na té stránce chceš vykreslit nějaký formulář, nepřidáváš mu protection ($form->addProtection())? Ta totiž využívá sessions a pokud je jinak stránka nevyužívá (třeba autentikace uživatelů), session se startuje až při vytvoření formuláře (což je v tomto případě až v šabloně – moc pozdě).
Zkus session startovat dříve, ručně v presenteru, buď přímo voláním Session#start() nebo by mělo stačit jen formulář vždy vytvořit někde v action, třeba takto: $this['someForm']; by to mělo stačit.

slawe
Člen | 11
+
0
-

Jo, v tom byla chyba, blbá protekce. Nastavil jsem akci a už to v pořádku funguje. Děkuji za pomoc :)

iguana007
Člen | 970
+
0
-

@slawe – trošku offtopic, ale k tomu webu. Imho máš špatně nastavené DNS, protože web naběhne pouze když zadám do URL i „www.“, bez něj ten web nenaskočí.

slawe
Člen | 11
+
0
-

Do DNS bohužel nezasáhnu, klient (úřad) má hosting u místního providera, k DNS se tak nedostanu. Ale hostin se nyní upgraduje na něco novějšího, tak snad to už vyřeší…