Logování chyb
Vypisování chyb se nesmí nikdy dostat na produkční server. Laděnka je výborná společnice na pracovišti, ale nikdy ji nesmíme brát sebou ven. Je totiž děsně ukecaná a vyzradí na vás úplně všechno (nicméně kdyby k tomu náhodou došlo, má integrovaný systém pro skrytí citlivých políček, např. hesel). Na produkčním serveru je však možné nechat výpisy ukládat do adresáře nebo odesílat administrátorovi emailem. To se zapíná takto:
Debug::enable(E_ALL, 'php_error.log', 'admin@example.com');
- první parametr určuje úroveň sledovaných chyb
- druhý parametr je jméno error logu (nebo
FALSE, pokud se chyby nemají logovat ale zobrazovat, neboNULL, pokud se použije autodetekce, viz níže) - třetí parametr je emailová adresa, kam se mají posílat notifikace (nebo pole hlaviček emailu, viz níže).
Laděnka tedy funguje buď v režimu zobrazování nebo logování chyb. To
se v podstatě přepíná druhým parametrem. Pokud jej však neuvedeme (nebo
má hodnotu NULL), rozhodne se podle prostředí
(Environment::isLive()) a pokud nejsme ve vývojovém prostředí,
zvolí logování do souboru %logDir%/php_error.log tudíž v Nette\Environment musí být
nastavena proměnná prostředí logDir nebo appDir.
(nicméně Nette\Debug lze používat stále samostatně,
závislost na třídě Environment je jen volitelná).
Třetí parametr je emailová adresa nebo pole hlaviček, kam bude zasílána notifikace o vzniku chyby (včetně fatálních nezachytitelných chyb). Je to udělané tak, že se pošle jen jeden email, takže nehrozí zaplavení adminovy schránky.
Emailové hlavičky (včetně pseudohlavičky Body) je možné specifikovat takto:
$emailHeaders = array(
'From' => 'web@example.com',
'To' => 'admin@example.com',
'Subject' => 'Mas tam chybu voe!',
'Body' => 'Mrkni na error log na serveru %host%',
);
Debug::enable(E_ALL, 'php_error.log', $emailHeaders);
