Nette – vypnutí a zapnutí laděnky

Aktualizováno: 21. 9. 2020, datum vydání: 27. 7. 2014

Ve frameworku Nette je k dispozici tzv. laděnka. Když dojde k nějaké chybě v našem programu, vyvolá se výjimka. Místo standardní chybové hlášky PHP se aktivuje laděnka naprogramovaná ve frameworku Nette a chybu nám vypíše. Dokonce ukáže, kde přesně chyba vznikla. Vypíše i veškeré proměnné, které jsou inicializovány.

Laděnka je skvělá věc pro ladění lokální verze aplikace v PHP. Na ostré verzi umístěné na internetu se standardně laděnka nespouští a vypíše se stránka s interní chybou Error 500. To je v pořádku. Na internetu si nemůžeme dovolit z bezpečnostního hlediska výpis všech proměnných na obrazovku uživatele. Ale i na ostré produkční verzi lze laděnku ručně zapnout php kódem:

$configurator->setDebugMode(TRUE);

či vypnout

$configurator->setDebugMode(FALSE);

Na ostré produkční verzi by však laděnka neměla být nikdy zaplá.

Jak odladit chybu na ostré verzi webu?

Problém trochu nastává v momentě, kdy v kódu máme nějakou chybu, která se nám na lokální (developerské) testovací verzi neprojevuje a projevuje se nám pouze na ostré (produkční) verzi webu. Jak pak aplikaci odladit, když se nám zobrazí pouze hláška s errorem aplikace? Příkladem může být např. chybné připojení na ostrou databázi.

Rychlý výpis proměnných – echo;

Kdybychom pracovali v surovém jednoduchém PHP a nikoli v nadstavbě frameworku, tak si třeba jen tak narychlo hodíme nějaké to echo a jednu či dvě proměnné si vypíšeme i za běhu aplikace. Samozřejmě že bychom takto neměli postupovat, ale on se svět úplně nezboří, pokud třeba náš web není nějaká super navštěvovaná stránka. Případně výpis proměnných bychom mohli narychlo povolit pouze pro naši IP adresu, kterou si zjistíme. Další možností by bylo dočasně omezit přístup na IP adresu pro celý web pomocí souboru .htaccess. Výpis proměnných přes echo ale není ve frameworku tak jednoduchý a místo něho máme právě laděnku.

Povolení laděnky všem – velký problém

Pokud bychom i na chvilku povolili na ostré verzi laděnku, tak nastane dosti velký problém, protože se nešifrovaně v rámci laděnky přenáší prakticky veškeré proměnné, tedy i např. jméno přihlášeného uživatele, vykonané SQL dotazy, jména souborů a spousty interních informací včetně konfigurace. Hesla jsem tam teda naštěstí vypsaná přímo nenašla, pokud bychom je asi zrovna extra nevypisovali a nenaplňovali zrovna do proměnných.

Omezení laděnky na naši IP adresu

V případě nutnosti lze laděnku zapnout také jen pro určitou IP adresu. Svou IP adresu na internetu lze zjistit pomocí např. služby moje IP adresa. Tuto adresu lze pak uvést v parametru metody setDebugMode:

// aktivuje laděnku pouze pro dané ip adresy
$configurator->setDebugMode(array('170.85.255.248'));

Toto omezení na naši IP adresu pro ladění ostré verze vidím jako nejvýhodnější řešení.

Další články