Tracy a Error 500 – Tracy ignoruje nastavený ErrorPresenter

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

Zdravím,

narazil jsem na problém s Tracy.

Když si definuji vlastní ErrorPresenter, tak chci, aby dokázal odchytit i Chybu 500 a zobrazit šablonu takovou, jakou si sám nadefinuji. Když jsem zkoušel v presenteru $this->error(‚cosi‘, 500) tak vše ok, ale když nechám projít PHP chybnu, např. na nějaké proměné zkusím zavolat metodu (jako by ta proměnná byla objekt) tak to jde do kopru a veškereé mé snahy přebije tracy error template.

Nikde jsem ani nenašel info, jak bych jje mohl nakonfigurovat jinak, než že přímo zasáhnu do vendor/ kde je tracy uložená composerem, cž dle mého ale není správně.

Může někdo poradit, jak mám správně dodefinovat ErrorPresenter, nebo co mám udělat, aby tracy brutálně nezobrazovala svůj template?

David Matějka
Moderator | 6445
+
0
-

přebije tracy error template.

defaultni error template, nebo mas na mysli bluescreen?

V pripade, ze bluescreen a jsi v debug modu, tak je to OK. Pokud chces v debug modu nastavit zachytavani vyjimek error presenterem, musis nastavit

application: #pripadne jeste pod sekci nette pro <= 2.2
	catchExceptions: true

V pripade, ze jsi v produkci a zobrazuje se ti defaultni error template, tak bych to videl na „An error occurred while executing error presenter“ nebo jak to je :) koukni do /log adresare…

Petr Kobelka
Člen | 6
+
0
-

Celý požadavek je v produkčním prostředí i v případě chyby 500 zobrazit vlastní stránku s hlášením chyby. To nejde. Chyby 400 i 404 jsou ok, ale zrovna 500 odmítá.

Catch Exception mam i nastaveny error presenter. Tenfunguje správne. Jen v případě programové chyby je ErrorPresenter ignorován a něco si tam cpe tracy

Casper
Člen | 253
+
0
-

Pro PHP chyby jako je syntax error apod lze od Nette 2.3 použít toto:

Debugger::$errorTemplate = __DIR__.'/path/to/500.latte'; // static template!
Petr Kobelka
Člen | 6
+
0
-

Nette 2.2+ :-(

Pořád to ale neřeší problém, že chci použít error presenter pro genertování výstupu uživateli (tedy že definovaný nepoužije a jde někam jinam).

David Matějka
Moderator | 6445
+
0
-

v logu teda nic neni jo?

Petr Kobelka
Člen | 6
+
0
-

nic, co by se týkalo Error presenteru. Je tam pouze chyba, kterou jsem zavedl, abych otestoval šablonu 500 pro error presenter, ale na tu nedojde, dokonce není ani error presenter volán – je zajímavé, že se tak děje pouze u chyby 500. Všude jinde (např. 400,404) to je ok.

Petr Kobelka
Člen | 6
+
0
-

teď se mi v jiném případě správně načetl ErrorPresenter pro chybu 500. Jestli správně chápu ty rozdílné situace, pak ten rozdíl je v tom, že nyní to byla vyjímka z Nette formuláře, zatím co předtím to byla PHP chyba (která se zatím nevyhazuje jako vyjímka :-( – musíme vyčkat PHP7)

j0hny
Člen | 33
+
0
-

Zdravím, už jse to sice starší vlákno, nicméně mám stejný problém. V configu nastavený správně error presenter i catchExceptions, nicméně při 500 errorech se zobrazuje pořád šablona z Tracy a vůbec se nezavolá error presenter. Ostatní chyby (4xx) fungují správně, jen pětistovka se chová takto. Verze nette je 2.2.0

David Grudl
Nette Core | 8218
+
+1
-

Pravděpodobně i samotný error presenter vyhazuje chybu 500. Dědí od nějakého BasePresenteru? Tahá něco z databáze apod?