No, zkus potom udelat podminku na porovnani casu. Tj. treba agregovat nejakou chybu v zaznamu z databazoveho logu, v rozmezi nejakeho konkretniho casu, treba mezi 16 a 17 hodinou kdyz ti to z niceho nic dvakrat do roka preskoci. A kdyz tech zaznamu mas treba miliardu. To je najednou prevod pro kazdy zaznam slusnou komplikaci. Pritom by normalne stacila podminka typu od-do a s indexem na danem sloupci by mohlo byt hotovo za par minut :-)
Ale opravdu by me zajimalo jak byste napsal dotaz, ktery na data ulozena ve formatu UTC + casova zona, najde vsechny zaznamy ktere nastaly mezi 17 a 18 hodinou (at uz zimniho nebo letniho casu). Aniz by musel pro kazdy radek udelat prepocet. Naznacite?
Ja vam pak kdyztak ukazu stejny dotaz pro casove pasmo kde se na zimni/letni cas nehraje a muzeme debatovat nad tim, jak dlouho by prohledavani miliardy zaznamu v prvnim a druhem pripade trvalo ;-)
SELECT * FROM log WHERE log.timestamp::time BETWEEN '17:00:00' AND '18:00:00'
Protože chcete prohledávat podle času, potřebujete mít na čas index (a s časovými zónami to nijak nesouvisí, stejné by to bylo, kdyby neexistovalo nic jiného, než UTC ¨je to jako kdybyste chtěl vyhledávat třeba podle textového řetězce od pátého znaku dál). Takže si v tomto případě uděláte index na log.timestamp::time a výše uvedený dotaz se vyhodnotí prostě jako range podle idnexu.
1. nikoliv, od sameho zacatku resime velke mnozstvi dat a s tim souvisejici problem vykonu. Nepohodli je samozrejme neprijemne, ale budiz, rekneme ze to bude holt trosku drazsi. Nikoliv vsak nemozne.
2. vy nevite v jake casove zone ten uzivatel je? No holt jestli k tomu mate nejaky dalsi zahadny duvod, tak si to ulozte jako offset, na to casovou zonu nepotrebujete. Kazdopadne informace o tom v jake casove zone byl uzivatel kdysi driv problem zimniho/letniho casu v zone kde zrovna jsme nijak neresi.
3. takze si vzdycky nejdriv vytvorite specialni index? Pro cas a danou zonu? Jak to chcete udelat pri milarde zaznamu? Prijde mi to malinko komplikovanejsi nez zjistit vysledek podle UTC, vam ne?
4. Tak jestli chcete blbnout, tak vas muzu ubezpecit ze UTC rozhodne casova zona neni. To uz spis kdybyste rekl ze to je cas.. ale zona? Ne.
5. Myslim ze clovek nemusi byt velky psycholog aby dokazal rozlisit jestli se bavite nebo vztekate ;-)
Akorát předvádíte, že netušíte, o co jde. Třeba bod 3 – když budete mít vše jenom podle UTC a budete potřebovat najít všechny záznamy, které mají čas mezi 16:00 UTC a 17:00 UTC – budete pro efektivní hledání potřebovat index pouze s časem. Protože hodiny, které vás zajímají, jsou uprostřed údaje datum+čas, takže index na datum-čas by vám byl k ničemu. Bez ohledu na časové zóny.
OK, tak ještě jednou.
postgres=#CREATE TEMPORARY TABLE log (id int PRIMARY KEY, ts timestamptz); CREATE TABLE postgres=# INSERT INTO log (id, ts) VALUES (1, '2016-03-26 15:30:00 Europe/Prague'), (2, '2016-03-26 16:30:00 Europe/Prague'), (3, '2016-03-28 15:30:00 Europe/Prague'), (4, '2016-03-28 16:30:00 Europe/Prague'); INSERT 0 4 postgres=# SELECT *, ts AT TIME ZONE 'UTC' AS ts_utc FROM log; id | ts | ts_utc ----+------------------------+--------------------- 1 | 2016-03-26 15:30:00+01 | 2016-03-26 14:30:00 2 | 2016-03-26 16:30:00+01 | 2016-03-26 15:30:00 3 | 2016-03-28 15:30:00+02 | 2016-03-28 13:30:00 4 | 2016-03-28 16:30:00+02 | 2016-03-28 14:30:00 (4 rows) postgres=# SELECT *, ts AT TIME ZONE 'UTC' AS ts_utc FROM log WHERE ts::time BETWEEN '16:00:00' AND '17:00:00'; id | ts | ts_utc ----+------------------------+--------------------- 2 | 2016-03-26 16:30:00+01 | 2016-03-26 15:30:00 4 | 2016-03-28 16:30:00+02 | 2016-03-28 14:30:00 (2 rows)
Čemu na tom nerozumíte?
Aha, takže „index pro čas a časovou zónu“ není určení, jak má index vypadat.
Podstata mé odpovědi je také úplně někde jinde, než konstrukce indexu. Podstatou je to, že když chcete v databázi něco efektivně vyhledávat, musíte k tomu mít vhodně zkonstruovaný index. Přičemž pokud chcete vyhledávat podle lokálního času, potřebujete index nad lokálním časem – bez ohledu na to, jakým způsobem jsou data uložena. Výhodou některých databází pak je to, že takový index vytvoříte použitím jedné vestavěné funkce.
V komentáři jsem vám napsal SQL příkaz pro definici tabulky, kde jsou uvedené datové typy, příkazy, kterými byla data vložena (včetně hodnot), a dotazy včetně jejich výstupů, kterými jsem data získal. Zaznamenal jste doufám, že redakční systém Lupy ty příkazy vypisuje do malého okna a je potřeba si odrolovat dolů, abyste je viděl celé.
Je na těch triviálních SQL příkazech něco, co vám mohu dovysvětlit? Mám nějak upřesňovat, že zápis '2016-03-28 15:30:00 Europe/Prague' znamená čas 15:30 dne 28. 3. 2016 v lokální časové zóně ČR?
Čas zpracování pro sekvenci příkazů tak, jak jsem je napsal (bez indexů) je pro oba dotazy až na statisticky nevýznamnou odchylku shodný a trvá to dlouho, protože se musí provést fullscan celé tabulky.
Čas zpracování po přidání indexů na lokální čas a na UTC čas je pro oba dotazy až na statisticky nevýznamnou odchylku shodný a dotazy jsou provedeny velmi rychle, protože se vyberou řádky splňující podmínku podle indexu.
Konkrétní časy nemá smysl sem psát, protože záleží na tom, jak výkonný je počítač, na kterém databáze běží, na její konfiguraci i na tom, jestli počítač není zatížen i něčím jiným.
Ne, neni. Pro cas a casovou zonu si ho muzete zkonstruovat hned nekolika zpusoby.
A jinak samozrejme ze muzu klidne vyhledavat podle lokalniho casu s naindexovanym UTC. Staci mi znat posun. V opripade stridani letniho/zimniho casu to samozrejme efektivne nejde, jak uz jsme si rekli. Ale o tom celou dobu mluvime. Letni a zimni cas je pro vyhledavani podle casu proste problemem.
Mate jeste nejake napady, co vsechno by se dalo udelat aby se tento problem alespon castecne omezil?
Datový typ timestamptz je datum a čas s časovou zónou. Uložené je to tedy s časovou zónou, konkrétně s časovou zónou, která byla uvedena u té konkrétní hodnoty při vkládání. Ostatně, můžete to vidět sám, v tom výpisu je ten sloupec ts vypsaný a vidíte tam dva řádky s časovou zónou +01 a dva s +02.
Údaje jsem vkládal s časovou zónou Europe/Prague, jak je z výpisu vidět. Tento zápis se v okamžiku konverze řetězce na datum a čas s časovou zónou převede na odpovídající časovou zónu +01 nebo +02, podle toho, kam ta která hodnota spadá.
Když použiju časovou zónu Europe/Prague, můžu sedět klidně na Měsíci a počítač, ze kterého jsou data zadaná, může být třeba na Marsu, a pořád to bude časová zóna označující lokální čas v ČR.
Proč by se měl každý řádek přepočítávat. V dotazu je nějaký časový údaj, který se případně jednorázově převede na UTC. Vše pak běží v UTC. Jestli chcete výsledek v místním čase, tak se převede až výsledek.
Možná je podstatou vašich dotazů, že když je v uloženém údaji i informace o časovém pásmu, tak s tím údajem musíte DB při vyhledávání nějak složitě počítat. Ale to je jen o vhodném uložení těchto dat, což je interní záležitost DB a její programátoři zrovna takovéto věci optimalizují. Jestli to má na výsledný čas dotazů nějaký vliv, tak zcela marginální i pro big data.
Vy jste vubec nepochopil v cem je problem..
Já bych to trochu upřesnil. Já nechápu, proč vy děláte problém z něčeho, co vůbec problém není. Ptal jste se na ten hrozně problémový dotaz, tak jsem vám ho o pár komentářů níže napsal – po pravdě řečeno, neexistuje mnoho dotazů, které by byly jednodušší, než tento.
Mam li datum-cas v UTC, tak casovou zonu ukladat nepotrebuji. K cemu by mi byla kdyz ji znam?
Pro případ, když chcete uživateli zobrazit datum a čas ve stejné časové zóně, ve které je zadal. Třeba když uživatel v ČR zadá začátek události jako 26. 3. 2016 02:00:00 GST, asi to bude chtít příště zobrazit jako 26. 3. 2016 02:00:00 GST, a ne jako 25. 3. 2016 22:00:00 UTC, ani jako 25. 3. 2016 23:00:00 CET.
K cemu je vam cas interne prevedeny do UTC, kdyz chcete najit vsechny udalosti ke kterym doslo mezi 17 a 18 hodinou libovolneho dne a hlavne, mistniho casu?
Asi jste myslel datum a čas převedený do UTC. Je mi dost k ničemu, stejně jako mi bude k ničemu i v případě, že budu hledat údaje mezi 17 a 18 hodinou UTC daného dne. Když potřebuju vyhledávat podle času, musím mít v indexu čas – když budu vyhledávat podle času v UTC, budu tam mít čas v UTC, když budu vyhledávat podle lokálního času, budu tam mít lokální čas.
Nikoliv, datum-cas ukladaji v datetime ve formatu UTC. Zadnou casovou zonu.
UTC není formát. UTC je časová zóna.
Snazite se buhviproc obhajit neobhajitelne a pomalu u toho zacinate pusobit trosku srandovnim dojmem,:-)
U psaní toho triviálního SQL dotazu jsem se opravdu bavil.
Uložené mám datum a čas s časovou zónou, vždy podle lokální zóny používané v okamžiku toho daného času – údaje „od listopadu do března“ tedy budou uložené s CET, údaje „od dubna do října“ s CEST. Jak to interně ukládá databáze mne nemusí zajímat. Konverze je to ::time, to je přetypování na čas bez časové zóny, tedy '17:00:00 CET'::time = '17:00:00', '17:00:00 CEST'::time = '17:00:00'. Vaše podezření je špatné, PostgreSQL umí s časem počítat správně.
Když mám index podle UTC, je mi samozřejmě k ničemu, když chci hledat podle lokálního času. A opačně, když mám index podle lokálního času, je mi k ničemu, když chci hledat podle UTC. To ale není problém střídání letního a hvězdného času, ale toho, že chcete hledat podle dvou různých kritérií. Ten problém se vyřeší úplně stejně zrušením letního času jako zrušením vyhledávání podle UTC.
Jinak to, že jsou ty indexy navzájem „k ničemu“ není tak docela pravda, ony by se daly využít i navzájem, akorát by se vyhledávaný interval rozšířil o hodinu výsledná sada záznamu by se následně profiltrovala podle časové zóny. Bylo by to sice méně efektivní, než přímé využití indexu, ale pořád ještě efektivnější, než fullscan. Ale pochybuju, že by na tohle přišel nějaký optimalizátor „sám od sebe“, bylo by nutné ten dotaz odpovídajícím způsobem přeformulovat.
Jinak MSSQL je nejcaste pouzivany DB server v enterprise kategorii.
Což ještě nutně neznamená, že se v něm pohodlně pracuje s datem a časem.
Nevim jestli ma vyznam abych vysvetloval ze offset opravdu neni casova zona a ze se pouziva k necemu malinko jinemu.
Asi to význam nemá, když samotný Microsoft v dokumentaci uvádí: „Defines a date that is combined with a time of a day that has time zone awareness and is based on a 24-hour clock.“
Kazdopadne by bylo dobre mit na zreteli, ze se pro ukladani casu celkem logicky pouziva k tomu urceny datetime.
Pokud si vy ukládáte datum a čas bez časové zóny, nemůžete se pak divit, že ji uloženou nemáte. Hlavně to nezačněte ukládat i bez času, pak byste začal tvrdit, že čas v rámci dne je nesmysl, protože vy s tím máte problémy v databázi, a měl by stačit jen kalendář.
Treba Dynamics ktery tam sklada cas v UTC formatu a prevod na localtime provadi az na vystupu.
Aha, takže ukládají čas i s časovou zónou. Informace „vše je v UTC“ je také způsob uložení časové zóny.
Je to tak proto, ze konverze casu je proste draha operace, zejmena kdyz do veci vnasi hokej stridani zimniho a letniho casu.
Právě proto DB interně pracuje jen s časem v UTC, a když jí v dotazu zadáte jinou časovou zónu, nejprve si to interně převede do UTC. Což je levná operace, je to jeden dotaz do interní tabulky a provede se jednou pro celý dotaz.
Tak to bude dlouha debata :-D
1. nejde o pohodli ale o vykon. Vy jste vubec nepochopil v cem je problem..
2. mezi 'time zone' a 'time of a day that has time zone awareness' je proste rozdil. Kdyz nebudete nabalovat do vlakna dalsi silenosti, klidne se k tomu rozepisu ;-)
3. Mam li datum-cas v UTC, tak casovou zonu ukladat nepotrebuji. K cemu by mi byla kdyz ji znam?
4. Nikoliv, datum-cas ukladaji v datetime ve formatu UTC. Zadnou casovou zonu. Cemu na tom nerozumite?
5. K cemu je vam cas interne prevedeny do UTC, kdyz chcete najit vsechny udalosti ke kterym doslo mezi 17 a 18 hodinou libovolneho dne a hlavne, mistniho casu?
Snazite se buhviproc obhajit neobhajitelne a pomalu u toho zacinate pusobit trosku srandovnim dojmem,:-)
Nenestesi jsem mel pohotovost tenhle viked. Takze muzu rict a ani Oracle to nema vyresene nejlepe. Sice podporuje datovy typ "TIMESTAMP WITH TIMEZONE", ale k tomu nejde jednoduse pricist datovy typ INTERVAL. Takze se to musi konvertovat tam a nazpatek a programatorum to jaksi nevyslo naporve.
PS: Dalsi problem byl, ze cron taky nepodporuje casove zony a prechod na letni cas nedetekuje.
Cela ta problematika je mnohem slozitejsi nez by se na prvni pohled mohlo zdat, protoze hodiny se uci deti uz ve skolce a vsichni si mysli, ze tomu rozumi. Pak se ale napr. sami rebootuji servery kvuli prestupne vterine, protoze na to nikdo nemysel dopredu. Anebo autorum standartu nedojde, ze je to cele nesmyslne navrzene. Napr ISO SQL rika, ze scitanim casu a intervalu muze vzniknout neplatne datum a je vzdy na programatorovi aby si overil vysledek.(Viz proprietarni fce Oracle: add_months)
Správné řešení je opravdu ukládat UTC s informací o časovém pásmu. I když jde o big data. Jak si to s tím lokálním časem představujete, když je dnes vše celosvětově propojené a lezou do toho data z různých částí světa? To si budete ukládat místní čas, aniž byste věděl čí místní zrovna je?
MS má tohle obecně zprasené. I Windows si ve výchozím stavu vynucují, aby hardwarové hodiny jely v místním čase místo v UTC.
Tak to ale neni. Napr v MSSQL (a to opravdu neni okrajova DB) neni datovy typ, ktery by umoznil ukladani casove zony. Castecne by to snad slo eliminovat offsetem u neprilis casto pouzivaneho datoveho typu datetimeoffset, za predpokladu ze se budeme ochotni vzdat informaci o case na pocitacich v ruznych casovych pasmech.
Krom toho strilite trochu vedle. Problem neni s casovym pasmem, to je zalezitost geograficka a my celkem dobre vime v jakem casovem pasmu jsme a kdy plati letni a kdy zimni cas. Jenom holt mame data obcas o hodinu posoupnuta.
Problem pritom zustava at si je ulozime v UTC nebo v localtime, porad se muze sejit spatna kombinace. A je potiz dohledat casove intervaly ktere jsou u nekterych zaznamu napr 16-17 hodin a u jinych 17-18 kdyz mame ulozeno v localtime, jenom proto, ze se cas mezitim posunul. Nebo obracene, mit ulozeno v UTC a dohledavat cas 17-18, ktery je jednou +1 a jindy +2 hodiny.
A i kdyz si pomoci funkci MSSQL cas nakrasno dynamicky budeme prevadet, tak jednak UTC pro localtime nenaindexujeme (kdyz uz pominu tu zrudnost preindexovavat sloupec v UTC pro localtime nebo obracene) a druhak nam prohledavani zabere o nekolik radu vic casu. Coz je u big data zatracene znat...
Čas se „posouvá zpět“ pouze v případě, že neuvádíte kompletní časový údaj (vynecháte časovou zónu). Jinak s tím problém není, protože časové údaje s uvedením časové zóny jsou jednoznačné a jsou na sebe navzájem bez problémů převoditelné. 02:30:00 SEČ = 03:30:00 SELČ = 01:30:00 UTC. Celý „problém“ pak spočívá v tom, že např. v EU se v období do 27. 3. 2016 00:59:59 UTC používá SEČ, od 27. 3. 2016 01:00:00 UTC do 30. 10. 2016 00:59:59 UTC se používá SELČ.
Když píšete o indexu na sloupci, předpokládám, že myslíte nějakou databázi. Sloupec v té databázi ale má datový typ, asi datum a čas s časovou zónou. Ten převod pak zařídí databáze a použije index, protože převod mezi časovými zónami je jednoznačně dán, a kterékoli dva časové údaje i v různých časových zónách dokážete jednoznačně seřadit.
Pokud někdo ukládá datum a čas bez časové zóny, je to jeho problém.
Ano, MS SQL je specifická databáze. Nicméně datetimeoffset je právě datový typ, který umožňuje ukládat datum a čas s časovým pásmem.
To, co vy složitě popisujete jako jakési podivné posunování času, je ve skutečnosti to, co jsem napsal já – změna časového pásma, které se používá pro lokální čas. V zimě používáme pro lokální čas časové pásmo SEČ (středoevropský čas, mezinárodní zkratka CET), v létě používáme časové pásmo SELČ (středoevropský letní čas, mezinárodní zkratka CEST).
Pokud si čas ukládáte i s časovým pásmem, žádný problém nenastává. Protože SEČ na UTC převedete jednoduše tak, že odečtete jednu hodinu, SELČ na UTC převedete tak, že odečtete dvě hodiny. Špatná kombinace nastat nemůže. Problém máte jedině tehdy, když ukládáte datum a čas bez časové zóny, což je váš problém.
Pokud vaše databáze nemá vestavěné funkce pro rozumnou práci s datem a časem, je to problém té databáze. Třeba PostgreSQL umí s datem a časem s časovým pásmem normálně pracovat. Záznamy v databázi můžete mít uložené klidně v UTC nebo v CET/CEST. Když si vytvoříte SQL dotaz, kde použijete čas 17–18 hodin v časové zóně Europe/Prague, v době kompilace dotazu se to převede na UTC a pak se to v databázi vyhledá normálně podle indexu.
Pokud máte možnost zvolit správný datový typ a zvolíte špatný, je to problém váš. Pokud používáte špatnou databázi, je to problém té databáze a také toho, kdo ji zvolil. Ale těžko to může být obecný problém práce s datem a časem, když existují databáze, které s tím umí normálně pracovat. Např. v PostgreSQL můžete porovnávat datum a čas v různých časových zónách, můžete převádět datum a čas z jedné časové zóny do jiné, není s tím žádný problém. A upřímně řečeno, ono na tom není nic složitého, i do toho MS SQL byste si to mohl snadno doprogramovat. Prostě stačí vše převádět do UTC, a vedle uložené hodnoty v UTC si ještě uložit časovou zónu, pro případ, že bude uživatele zajímat, v jaké časové zóně si ten údaj uložil.
Jinak MSSQL je nejcaste pouzivany DB server v enterprise kategorii.
Nevim jestli ma vyznam abych vysvetloval ze offset opravdu neni casova zona a ze se pouziva k necemu malinko jinemu. Kazdopadne by bylo dobre mit na zreteli, ze se pro ukladani casu celkem logicky pouziva k tomu urceny datetime.
A tim 'pouzivaji' chci rict, ze v nem cas ukladaji i standardni MS produkty. Treba Dynamics ktery tam sklada cas v UTC formatu a prevod na localtime provadi az na vystupu. Jak taky jinak, ze.
Je to tak proto, ze konverze casu je proste draha operace, zejmena kdyz do veci vnasi hokej stridani zimniho a letniho casu.
User Warning
File: .../stable/php-libs/appShare/components/GlobalFooter.php:70
60: $svgResponse = $client->request('GET', '/svg/', ['auth' => ['Basic', null]]); 61: $svg = $svgResponse->getBody()->getContents(); 62: } catch (Exception) { 63: } 64: $footer = $svg . $footerHtml; 65: $response = new Nette\Application\Responses\TextResponse($footer); 66: $this->cache->save($cacheKey, $response, [ 67: Cache::Expire => self::CACHE_EXPIRE, 68: ]); 69: } else { 70: trigger_error('global-footer: status code ' . $htmlResponse->getStatusCode(), E_USER_WARNING); 71: } 72: } 73: return $result; 74: }
60: $svgResponse = $client->request('GET', '/svg/', ['auth' => ['Basic', null]]); 61: $svg = $svgResponse->getBody()->getContents(); 62: } catch (Exception) { 63: } 64: $footer = $svg . $footerHtml; 65: $response = new Nette\Application\Responses\TextResponse($footer); 66: $this->cache->save($cacheKey, $response, [ 67: Cache::Expire => self::CACHE_EXPIRE, 68: ]); 69: } else { 70: trigger_error('global-footer: status code ' . $htmlResponse->getStatusCode(), E_USER_WARNING); 71: } 72: } 73: return $result; 74: }
| $message | 'global-footer: status code 500'
|
|---|---|
| $error_level | 512
|
69: } else { 70: trigger_error('global-footer: status code ' . $htmlResponse->getStatusCode(), E_USER_WARNING); 71: } 72: } 73: return $result; 74: } 75: 76: public function render(): void { 77: $seznamVisitor = $this->seznamVisitorService->isVisitorFromSeznam() ? 'true' : 'false'; 78: $cacheKey = self::class . '_' . AppConfig::$usersys['site'] . '_' . $seznamVisitor; 79: $cachedResponse = $this->loadCachedResponse($cacheKey); 80: 81: $template = $this->getTemplate(); 82: if ($cachedResponse === null) { 83: $cachedResponse = $this->cache->load($cacheKey);
| $cacheKey | 'Shared_GlobalFooter_lupa_false'
|
|---|
49: 100% { transform: rotate(360deg); } 50: } 51: </style> 52: '; 53: echo LR\Filters::escapeHtmlText($handlerGw->callHandler('js', ['global/components/lazyComponent.js'])) /* line 31 */; 54: echo "\n"; 55: } 56: } else /* line 33 */ { 57: $object = $control->getComponent($component) /* line 34 */; 58: $method = 'render' . ($action ? ucfirst($action) : '') /* line 35 */; 59: echo LR\Filters::escapeHtmlText(call_user_func_array([$object, $method], $args)) /* line 36 */; 60: echo "\n"; 61: } 62: return get_defined_vars(); 63: }
26: width: 20px; height: 20px; border: 4px solid #aaa; border-bottom-color: transparent; border-radius: 50%; 27: display: inline-block; box-sizing: border-box; 28: animation: rotation 1s linear infinite; 29: } 30: @keyframes rotation { 31: 0% { transform: rotate(0deg); } 32: 100% { transform: rotate(360deg); } 33: } 34: </style> 35: 36: {$handlerGw->callHandler('js', ['global/components/lazyComponent.js'])} 37: 38: {/if} 39: 40: {else}
161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) { 175: while (ob_get_level() > $level) {
92: 93: /** 94: * Renders template to output. 95: * @param object|mixed[] $params 96: */ 97: public function render(string $name, $params = [], ?string $block = null): void 98: { 99: $template = $this->createTemplate($name, $this->processParams($params)); 100: $template->global->coreCaptured = false; 101: ($this->probe)($template); 102: $template->render($block); 103: } 104: 105: 106: /**
| $block | null
|
|---|
40: /** 41: * Renders template to output. 42: */ 43: public function render(?string $file = null, array $params = []): void 44: { 45: Nette\Utils\Arrays::toObject($params, $this); 46: if (\cfg::$debug['tmplDump']) { 47: $filePath = strstr($file ? : $this->file, "templates/"); 48: echo '<pre class="nette-dump"><span class="nette-dump-object">' . get_class($this->control) . ": $filePath" . '</span></pre>'; 49: } 50: $this->latte->render($file ?: $this->file, $this); 51: } 52: 53: 54: /**
| $name | '/www/virtual/martin/stable/php-libs/appShare/templates/components/LazyComponent.latte'
|
|---|---|
| $params |
255: 256: if (!$this->isAjax()) { 257: $this['cssLoader']->render(); 258: $this['jsLoader']->render(); 259: } 260: 261: if ($this->useWrappingElement) { 262: $this->renderBeginWrappingElement(); 263: } 264: 265: $template->render(); 266: 267: if ($this->useWrappingElement) { 268: $this->renderEndWrappingElement(); 269: }
15: } else { 16: $this->template->component = $name; 17: $this->template->action = null; 18: } 19: 20: $this->template->args = $args; 21: 22: $this->template->defer = $defer; 23: 24: self::$rendered = true; 25: parent::render(); 26: } 27: 28: /** 29: * Fallback to diredtly create component instead of lazy loading when it is disabled in template config
| $name | 'globalFooter'
|
|---|
91: unset($parameters[\Shared_BaseComponent::EXTRA_PARAM_NAME]); 92: } else { 93: $control->clearExtraParameters(); 94: } 95: } 96: 97: if ($isDebug) { 98: // call method this way is much faster 99: // see http://grokbase.com/t/php/php-internals/115qyp1bjk/call-user-func-performance-and-dynamic-code 100: if (!$parameters) $control->$method(); 101: else call_user_func_array([$control, $method], array_values($parameters)); 102: return; 103: } 104: 105: try {
| $callback | |
|---|---|
| $args |
116: $this->renderBlock('commonFooter--lowerbox', get_defined_vars()) /* line 38 */; 117: echo "\n"; 118: } 119: if ($globalFooter === false) /* line 40 */ { 120: echo '<div class="section--footer section footer"> 121: '; 122: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('projectInfo.latte', $this->getName(), true), $this->getParameters(), "includeX")->render(); 123: echo '</div> 124: '; 125: } else /* line 45 */ { 126: IInfo\LatteMacros::renderControl("lazyComponent", "render", ['globalFooter'], $this->global->uiControl); 127: } 128: echo '</div> 129: </div> 130: </div>
1: 2: {default $hasPageAdverts = true} 3: {default $isFooterTypeAdditonalContent = true} 4: {default $isLayoutPageColumnsClosed = false} 5: 6: {* SWITCH ON GLOBAL FOOTER FOR IINFO WEBS + specific Tuesday (except stahuj, slunecnice) *} 7: {default $globalFooter = true} 8: {* VARIABLE USED IN appShare/templates/@footer--tuesday.latte *} 9: {default $isTuesday = false} 10: 11: {block CommonFooterBlock} 12: {if !$isLayoutPageColumnsClosed} 13: </div> {* end tag for "layout-page-column--main" if "@footer--RootLike.latte" is not used (it contains sidebar where the tag is needed to be closed before sidebar's content) *} 14: {/if} 15: </div> {* for "layout-page-columns" *}
| $control | |
|---|---|
| $method | 'render'
|
| $parameters | |
| $container |
299: 300: if (!$block) { 301: $hint = ($t = Latte\Helpers::getSuggestion($this->getBlockNames($layer), $name)) 302: ? ", did you mean '$t'?" 303: : '.'; 304: $name = $layer ? "$layer $name" : $name; 305: throw new Latte\RuntimeException("Cannot include undefined block '$name'$hint"); 306: } 307: 308: $this->filter( 309: function () use ($block, $params): void { reset($block->functions)($params); }, 310: $mod, 311: $block->contentType, 312: "block $name" 313: );
| $ʟ_args | null
|
|---|
354: $block->functions = array_merge($block->functions, $functions); 355: } 356: 357: 358: /** 359: * @param string|\Closure|null $mod content-type name or modifier closure 360: */ 361: private function filter(callable $function, $mod, string $contentType, string $name): void 362: { 363: if ($mod === null || $mod === $contentType) { 364: $function(); 365: 366: } elseif ($mod instanceof \Closure) { 367: echo $mod($this->capture($function), $contentType); 368:
302: ? ", did you mean '$t'?" 303: : '.'; 304: $name = $layer ? "$layer $name" : $name; 305: throw new Latte\RuntimeException("Cannot include undefined block '$name'$hint"); 306: } 307: 308: $this->filter( 309: function () use ($block, $params): void { reset($block->functions)($params); }, 310: $mod, 311: $block->contentType, 312: "block $name" 313: ); 314: } 315: 316:
| $function | |
|---|---|
| $mod | null
|
| $contentType | 'html'
|
| $name | 'block CommonFooterBlock'
|
14: { 15: extract($this->params); 16: extract(['hasPageAdverts' => true], EXTR_SKIP) /* line 1 */; 17: extract(['isFooterTypeAdditonalContent' => true], EXTR_SKIP) /* line 2 */; 18: extract(['isLayoutPageColumnsClosed' => false], EXTR_SKIP) /* line 3 */; 19: extract(['globalFooter' => true], EXTR_SKIP) /* line 5 */; 20: extract(['isTuesday' => false], EXTR_SKIP) /* line 7 */; 21: if ($this->getParentName()) { 22: return get_defined_vars(); 23: } 24: $this->renderBlock('CommonFooterBlock', get_defined_vars()) /* line 8 */; 25: echo ' 26: </div> 27: '; 28: if (!isset($isVisitorFromSeznam) || $isVisitorFromSeznam === false) /* line 55 */ {
1: 2: {default $hasPageAdverts = true} 3: {default $isFooterTypeAdditonalContent = true} 4: {default $isLayoutPageColumnsClosed = false} 5: 6: {* SWITCH ON GLOBAL FOOTER FOR IINFO WEBS + specific Tuesday (except stahuj, slunecnice) *} 7: {default $globalFooter = true} 8: {* VARIABLE USED IN appShare/templates/@footer--tuesday.latte *} 9: {default $isTuesday = false} 10: 11: {block CommonFooterBlock} 12: {if !$isLayoutPageColumnsClosed} 13: </div> {* end tag for "layout-page-column--main" if "@footer--RootLike.latte" is not used (it contains sidebar where the tag is needed to be closed before sidebar's content) *} 14: {/if} 15: </div> {* for "layout-page-columns" *}
| $name | 'CommonFooterBlock'
|
|---|---|
| $params |
161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) { 175: while (ob_get_level() > $level) {
193: 194: if ($this->referenceType === 'import') { 195: if ($this->parentName) { 196: throw new Latte\RuntimeException('Imported template cannot use {extends} or {layout}, use {import}'); 197: } 198: 199: } elseif ($this->parentName) { // extends 200: ob_start(function () {}); 201: $this->params = $this->main(); 202: ob_end_clean(); 203: $this->createTemplate($this->parentName, $this->params, 'extends')->render($block); 204: 205: } elseif ($block !== null) { // single block rendering 206: $this->renderBlock($block, $this->params); 207:
| $block | null
|
|---|
160: 161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) {
| $block | null
|
|---|
104: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/ConsultingModule/detail.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 105: } elseif ($isSidebarTypeConsultingQuestions) /* line 97 */ { 106: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/ConsultingModule/questions.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 107: } elseif ($isSidebarCryptoCurrencyExchange) /* line 99 */ { 108: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/QuotationModule/cryptoCurrencyExchange.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 109: } elseif ($disableSidebar) /* line 101 */ { 110: } else /* line 102 */ { 111: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/@default.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 112: } 113: } 114: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('commonFooter.latte', $this->getName(), false), ['isLayoutPageColumnsClosed' => $isLayoutPageColumnsClosedDefault,] + $this->getParameters(), "includeX")->render(); 115: return get_defined_vars(); 116: } 117: 118:
1: {default $isSidebarTypeActuality = false} 2: {default $isSidebarTypeAnniversaryComics = false} 3: {default $isSidebarTypeArchiveActualities = false} 4: {default $isSidebarTypeArchiveLabelDetail = false} 5: {default $isSidebarTypeArticle = false} 6: {default $isSidebarTypeAwards = false} 7: {default $isSidebarTypeBlogs = false} 8: {default $isSidebarTypeBlogsDetail = false} 9: {default $isSidebarTypeBlogsIndex = false} 10: {default $isSidebarTypeConsultingDetail = false} 11: {default $isSidebarTypeConsultingQuestions = false} 12: {default $isSidebarTypeDatabaseCatalog = false} 13: {default $isSidebarTypeDatabaseView = false} 14: {default $isSidebarTypeDiscussionDetail = false} 15: {default $isSidebarTypeIndex = false}
161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) { 175: while (ob_get_level() > $level) {
193: 194: if ($this->referenceType === 'import') { 195: if ($this->parentName) { 196: throw new Latte\RuntimeException('Imported template cannot use {extends} or {layout}, use {import}'); 197: } 198: 199: } elseif ($this->parentName) { // extends 200: ob_start(function () {}); 201: $this->params = $this->main(); 202: ob_end_clean(); 203: $this->createTemplate($this->parentName, $this->params, 'extends')->render($block); 204: 205: } elseif ($block !== null) { // single block rendering 206: $this->renderBlock($block, $this->params); 207:
| $block | null
|
|---|
160: 161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) {
| $block | null
|
|---|
2: 3: use Latte\Runtime as LR; 4: 5: /** source: /www/virtual/martin/stable/php-libs/appShare/templates/OpinionsModule/ForArticle/footer.latte */ 6: final class Templatebb284872f5 extends Latte\Runtime\Template 7: { 8: 9: public function main(): array 10: { 11: extract($this->params); 12: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination("../../footer.latte", $this->getName(), false), $this->getParameters(), "includeX")->render(); 13: return get_defined_vars(); 14: } 15: 16:
1: {* 2: necessary if we need some special different sidebars for a article detail page on 3: different servers 4: *} 5: {includeX "../../footer.latte"} 6:
161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) { 175: while (ob_get_level() > $level) {
106: ob_end_clean(); 107: } else { 108: echo ob_get_clean(); 109: } 110: } 111: } 112: echo '</div> 113: '; 114: $this->renderBlock('Opinions_ForArticle__belowForm', get_defined_vars()) /* line 46 */; 115: echo "\n"; 116: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('footer.latte', $this->getName(), false), $this->getParameters(), "includeX")->render(); 117: return get_defined_vars(); 118: } 119: 120:
1: {includeX '/header.latte'} 2: 3: 4: {var $isOpinionsListing = (isset($opinionsListing) && $opinionsListing)} 5: {var $isOpinionAddComponent = (isset($opinionAddComponent) && $opinionAddComponent)} 6: 7: {block Opinions_ForArticle__aboveForm}{/block} 8: 9: <div class="design-tile--version-1 design-tile"> 10: <h1 class="{if $isOpinionsListing && !$isOpinionAddComponent} design-heading--opinions-comment-button {/if} design-heading--opinions-comment design-heading--level-1 design-heading"> 11: <span> 12: {if isset($shortTitle) && $shortTitle} 13: {$shortTitle} 14: {else} 15: {$titlePrefix}
161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) { 175: while (ob_get_level() > $level) {
193: 194: if ($this->referenceType === 'import') { 195: if ($this->parentName) { 196: throw new Latte\RuntimeException('Imported template cannot use {extends} or {layout}, use {import}'); 197: } 198: 199: } elseif ($this->parentName) { // extends 200: ob_start(function () {}); 201: $this->params = $this->main(); 202: ob_end_clean(); 203: $this->createTemplate($this->parentName, $this->params, 'extends')->render($block); 204: 205: } elseif ($block !== null) { // single block rendering 206: $this->renderBlock($block, $this->params); 207:
| $block | null
|
|---|
160: 161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) {
| $block | null
|
|---|
5: /** source: /www/virtual/martin/stable/php-libs/appShare/templates/OpinionsModule/ForArticle/thread.latte */ 6: final class Templateec62bab595 extends Latte\Runtime\Template 7: { 8: 9: public function main(): array 10: { 11: extract($this->params); 12: if (!empty($_HT_vars)) /* line 1 */ { 13: extract((array) $_HT_vars) /* line 2 */; 14: } 15: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination("default.latte", $this->getName(), false), ['_HT_vars' => !empty($_HT_vars) ? $_HT_vars : null] + $this->getParameters(), "includeX")->render(); 16: return get_defined_vars(); 17: } 18: 19:
1: {if !empty($_HT_vars)} 2: {php extract((array) $_HT_vars)} 3: {/if} 4: 5: {includeX "default.latte" _HT_vars => !empty($_HT_vars) ? $_HT_vars : null} 6:
161: /** 162: * Renders template. 163: * @internal 164: */ 165: public function render(?string $block = null): void 166: { 167: $level = ob_get_level(); 168: try { 169: $this->prepare(); 170: if (!$this->doRender($block)) { 171: $this->main(); 172: } 173: 174: } catch (\Throwable $e) { 175: while (ob_get_level() > $level) {
92: 93: /** 94: * Renders template to output. 95: * @param object|mixed[] $params 96: */ 97: public function render(string $name, $params = [], ?string $block = null): void 98: { 99: $template = $this->createTemplate($name, $this->processParams($params)); 100: $template->global->coreCaptured = false; 101: ($this->probe)($template); 102: $template->render($block); 103: } 104: 105: 106: /**
| $block | null
|
|---|
40: /** 41: * Renders template to output. 42: */ 43: public function render(?string $file = null, array $params = []): void 44: { 45: Nette\Utils\Arrays::toObject($params, $this); 46: if (\cfg::$debug['tmplDump']) { 47: $filePath = strstr($file ? : $this->file, "templates/"); 48: echo '<pre class="nette-dump"><span class="nette-dump-object">' . get_class($this->control) . ": $filePath" . '</span></pre>'; 49: } 50: $this->latte->render($file ?: $this->file, $this); 51: } 52: 53: 54: /**
| $name | '/www/virtual/martin/stable/php-libs/appShare/templates/OpinionsModule/ForArticle/thread.latte'
|
|---|---|
| $params |
40: return $this->source; 41: } 42: 43: 44: /** 45: * Sends response to output. 46: */ 47: public function send(Nette\Http\IRequest $httpRequest, Nette\Http\IResponse $httpResponse): void 48: { 49: if ($this->source instanceof Nette\Application\UI\Template) { 50: $this->source->render(); 51: 52: } else { 53: echo $this->source; 54: }
161: 162: Arrays::invoke($this->onPresenter, $this, $this->presenter); 163: $response = $this->presenter->run(clone $request); 164: 165: if ($response instanceof Responses\ForwardResponse) { 166: $request = $response->getRequest(); 167: goto process; 168: } 169: 170: Arrays::invoke($this->onResponse, $this, $response); 171: $response->send($this->httpRequest, $this->httpResponse); 172: } 173: 174: 175: public function processException(\Throwable $e): void
| $httpRequest | |
|---|---|
| $httpResponse |
80: } 81: 82: 83: /** 84: * Dispatch a HTTP request to a front controller. 85: */ 86: public function run(): void 87: { 88: try { 89: Arrays::invoke($this->onStartup, $this); 90: $this->processRequest($this->createInitialRequest()); 91: Arrays::invoke($this->onShutdown, $this); 92: 93: } catch (\Throwable $e) { 94: Arrays::invoke($this->onError, $this, $e);
| $request |
|---|
13: !empty($_SERVER["HTTPS"]), 14: 'http://forum.lupa.cz/', 15: trim(AppConfig::$modulesUrl['blogs'], '/'), 16: true 17: ); 18: $redirector->injectDibiConnections($bootstrap->getContext()->getService('dibiConnections')); 19: $redirector->redirectUrl(); 20: unset($redirector); 21: 22: $bootstrap->setupRouting(); 23: $bootstrap->getApplication()->run(); 24:
| HTTPS | 'on'
|
|---|---|
| SCRIPT_URL | '/clanky/zmena-casu-je-zase-tu-zmena-kterou-vlastne-vubec-nepotrebujeme/nazory/vlakno/4/'
|
| SCRIPT_URI | 'http://lupa-martin.imho.cz/clanky/zmena-casu-je-zase-tu-zmena-kterou-vlastne-vubec-nepotrebujeme/nazory/vlakno/4/'
|
| TZ | 'Europe/Prague'
|
| HTTP_HOST | 'lupa-martin.imho.cz'
|
| HTTP_ACCESS_CONTROL_ALLOW_ORIGIN | '*'
|
| HTTP_REFERRER_POLICY | 'no-referrer-when-downgrade'
|
| HTTP_X_REAL_IP | '216.73.216.175'
|
| HTTP_CONNECTION | 'close'
|
| HTTP_ACCEPT | '*/*'
|
| HTTP_USER_AGENT | 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)'
|
| HTTP_ACCEPT_ENCODING | 'gzip, br, zstd, deflate'
|
| HTTP_X_HTTPS | '1'
|
| PATH | '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
|
| LD_LIBRARY_PATH | '/opt/mozjpeg/lib64'
|
| SERVER_SIGNATURE | |
| SERVER_SOFTWARE | 'Apache/2.4.38 (Debian)'
|
| SERVER_NAME | 'lupa-martin.imho.cz'
|
| SERVER_ADDR | '127.0.0.1'
|
| SERVER_PORT | '80'
|
| REMOTE_ADDR | '216.73.216.175'
|
| DOCUMENT_ROOT | '/www/virtual/martin/stable/lupa/document_root/'
|
| REQUEST_SCHEME | 'http'
|
| CONTEXT_PREFIX | ''
|
| CONTEXT_DOCUMENT_ROOT | '/www/virtual/martin/stable/lupa/document_root/'
|
| SERVER_ADMIN | '[no address given]'
|
| SCRIPT_FILENAME | '/www/virtual/martin/stable/lupa/document_root/index.php'
|
| REMOTE_PORT | '37834'
|
| GATEWAY_INTERFACE | 'CGI/1.1'
|
| SERVER_PROTOCOL | 'HTTP/1.0'
|
| REQUEST_METHOD | 'GET'
|
| QUERY_STRING | 'XDEBUG_SESSION_STOP=1'
|
| REQUEST_URI | '/clanky/zmena-casu-je-zase-tu-zmena-kterou-vlastne-vubec-nepotrebujeme/nazory/vlakno/4/?XDEBUG_SESSION_STOP=1'
|
| SCRIPT_NAME | '/clanky/zmena-casu-je-zase-tu-zmena-kterou-vlastne-vubec-nepotrebujeme/nazory/vlakno/4/'
|
| PHP_SELF | '/clanky/zmena-casu-je-zase-tu-zmena-kterou-vlastne-vubec-nepotrebujeme/nazory/vlakno/4/'
|
| REQUEST_TIME_FLOAT | 1763705858.076276
|
| REQUEST_TIME | 1763705858
|
| __NF | Nette Session |
|---|
| Nette.Http.UserStorage/ | null
|
|---|
| APP_DIR | '/www/virtual/martin/stable/lupa/app'
|
|---|---|
| APP_LIB_DIR | '/www/virtual/martin/stable/lupa/app/libs'
|
| LIB_DIR | '/www/virtual/martin/stable/php-libs'
|
| APP_SHARED_DIR | '/www/virtual/martin/stable/php-libs/appShare'
|
| APP_SHARED_LIB_DIR | '/www/virtual/martin/stable/php-libs/appShare/libs'
|
| APP_TEMPLATE_DIR | '/www/virtual/martin/stable/lupa/app/templates'
|
| APP_SHARED_TEMPLATE_DIR | '/www/virtual/martin/stable/php-libs/appShare/templates'
|
| WWW_DIR | '/www/virtual/martin/stable/lupa/document_root'
|
| RAMDISK | '/mnt/ramdisk'
|
| WORK_DIR | '/www/virtual/martin/stable/lupa/work'
|
| CACHE_DIR | '/www/virtual/martin/stable/lupa/work/cache'
|
| NETTE_CACHE_DIR | '/www/virtual/martin/stable/lupa/work/cache.nette'
|
| LOCAL_CACHE_DIR | '/www/virtual/martin/stable/lupa/work/cache.local'
|
| CHARSET | 'utf-8'
|
| DB_CHARSET | 'utf8'
|
| DB_ERROR_DUPLICATE_ENTRY | 1062
|
| MYSQLI_REFRESH_REPLICA | 64
|
| HTMLPURIFIER_PREFIX | '/www/virtual/martin/stable/lupa/vendor/ezyang/htmlpurifier/library'
|
| GEOIP_COUNTRY_BEGIN | 16776960
|
| GEOIP_STATE_BEGIN_REV0 | 16700000
|
| GEOIP_STATE_BEGIN_REV1 | 16000000
|
| GEOIP_STANDARD | 0
|
| GEOIP_MEMORY_CACHE | 1
|
| GEOIP_SHARED_MEMORY | 2
|
| STRUCTURE_INFO_MAX_SIZE | 20
|
| DATABASE_INFO_MAX_SIZE | 100
|
| GEOIP_COUNTRY_EDITION | 1
|
| GEOIP_PROXY_EDITION | 8
|
| GEOIP_ASNUM_EDITION | 9
|
| GEOIP_NETSPEED_EDITION | 10
|
| GEOIP_REGION_EDITION_REV0 | 7
|
| GEOIP_REGION_EDITION_REV1 | 3
|
| GEOIP_CITY_EDITION_REV0 | 6
|
| GEOIP_CITY_EDITION_REV1 | 2
|
| GEOIP_ORG_EDITION | 5
|
| GEOIP_ISP_EDITION | 4
|
| SEGMENT_RECORD_LENGTH | 3
|
| STANDARD_RECORD_LENGTH | 3
|
| ORG_RECORD_LENGTH | 4
|
| MAX_RECORD_LENGTH | 4
|
| MAX_ORG_RECORD_LENGTH | 300
|
| GEOIP_SHM_KEY | 1329681409
|
| US_OFFSET | 1
|
| CANADA_OFFSET | 677
|
| WORLD_OFFSET | 1353
|
| FIPS_RANGE | 360
|
| GEOIP_UNKNOWN_SPEED | 0
|
| GEOIP_DIALUP_SPEED | 1
|
| GEOIP_CABLEDSL_SPEED | 2
|
| GEOIP_CORPORATE_SPEED | 3
|
| GEOIP_DOMAIN_EDITION | 11
|
| GEOIP_COUNTRY_EDITION_V6 | 12
|
| GEOIP_LOCATIONA_EDITION | 13
|
| GEOIP_ACCURACYRADIUS_EDITION | 14
|
| GEOIP_CITYCOMBINED_EDITION | 15
|
| GEOIP_CITY_EDITION_REV1_V6 | 30
|
| GEOIP_CITY_EDITION_REV0_V6 | 31
|
| GEOIP_NETSPEED_EDITION_REV1 | 32
|
| GEOIP_NETSPEED_EDITION_REV1_V6 | 33
|
| GEOIP_USERTYPE_EDITION | 28
|
| GEOIP_USERTYPE_EDITION_V6 | 29
|
| GEOIP_ASNUM_EDITION_V6 | 21
|
| GEOIP_ISP_EDITION_V6 | 22
|
| GEOIP_ORG_EDITION_V6 | 23
|
| GEOIP_DOMAIN_EDITION_V6 | 24
|
| CITYCOMBINED_FIXED_RECORD | 7
|
| FULL_RECORD_LENGTH | 50
|
| TEXY_ALL | true
|
| TEXY_NONE | false
|
| TEXY_CONTENT_MARKUP | |
| TEXY_CONTENT_REPLACED | |
| TEXY_CONTENT_TEXTUAL | |
| TEXY_CONTENT_BLOCK | |
| TEXY_VERSION | '2.9.3'
|
| TEXY_HEADING_DYNAMIC | 1
|
| TEXY_HEADING_FIXED | 2
|
| TEXY_CHAR | 'A-Za-z\x{C0}-\x{2FF}\x{370}-\x{1EFF}'
|
| TEXY_MARK | '\x14-\x1F'
|
| TEXY_MODIFIER | |
| TEXY_MODIFIER_H | |
| TEXY_MODIFIER_HV | |
| TEXY_IMAGE | |
| TEXY_LINK_URL | |
| TEXY_LINK | |
| TEXY_LINK_N | |
| TEXY_EMAIL | |
| TEXY_URLSCHEME | '[a-z][a-z0-9+.-]{0,20}:'
|
| Apache Version | Apache/2.4.38 (Debian) |
| Apache API Version | 20120211 |
| Server Administrator | [no address given] |
| Hostname:Port | lupa-martin.imho.cz:0 |
| User/Group | www-data(33)/33 |
| Max Requests | Per Child: 0 - Keep Alive: on - Max Per Connection: 100 |
| Timeouts | Connection: 300 - Keep-Alive: 5 |
| Virtual Server | Yes |
| Server Root | /etc/apache2 |
| Loaded Modules | core mod_so mod_watchdog http_core mod_log_config mod_logio mod_version mod_unixd mod_access_compat mod_alias mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cache mod_cgi mod_deflate mod_dir mod_env mod_expires mod_fcgid mod_file_cache mod_filter mod_headers mod_include mod_mime prefork mod_negotiation mod_php mod_proxy mod_proxy_connect mod_proxy_fcgi mod_proxy_http mod_remoteip mod_reqtimeout mod_rewrite mod_setenvif mod_slotmem_shm mod_socache_shmcb mod_ssl mod_status mod_userdir |
| Directive | Local Value | Master Value |
|---|---|---|
| engine | On | On |
| last_modified | Off | Off |
| xbithack | Off | Off |
| Variable | Value |
|---|---|
| HTTPS | on |
| SCRIPT_URL | /clanky/zmena-casu-je-zase-tu-zmena-kterou-vlastne-vubec-nepotrebujeme/nazory/vlakno/4/ |
| SCRIPT_URI | http://lupa-martin.imho.cz/clanky/zmena-casu-je-zase-tu-zmena-kterou-vlastne-vubec-nepotrebujeme/nazory/vlakno/4/ |
| TZ | Europe/Prague |
| HTTP_HOST | lupa-martin.imho.cz |
| HTTP_ACCESS_CONTROL_ALLOW_ORIGIN | * |
| HTTP_REFERRER_POLICY | no-referrer-when-downgrade |
| HTTP_X_REAL_IP | 216.73.216.175 |
| HTTP_CONNECTION | close |
| HTTP_ACCEPT | */* |
| HTTP_USER_AGENT | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) |
| HTTP_ACCEPT_ENCODING | gzip, br, zstd, deflate |
| HTTP_X_HTTPS | 1 |
| PATH | /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| LD_LIBRARY_PATH | /opt/mozjpeg/lib64 |
| SERVER_SIGNATURE | <address>Apache/2.4.38 (Debian) Server at lupa-martin.imho.cz Port 80</address> |
| SERVER_SOFTWARE | Apache/2.4.38 (Debian) |
| SERVER_NAME | lupa-martin.imho.cz |
| SERVER_ADDR | 127.0.0.1 |
| SERVER_PORT | 80 |
| REMOTE_ADDR | 216.73.216.175 |
| DOCUMENT_ROOT | /www/virtual/martin/stable/lupa/document_root/ |
| REQUEST_SCHEME | http |
| CONTEXT_PREFIX | no value |
| CONTEXT_DOCUMENT_ROOT | /www/virtual/martin/stable/lupa/document_root/ |
| SERVER_ADMIN | [no address given] |
| SCRIPT_FILENAME | /www/virtual/martin/stable/lupa/document_root/index.php |
| REMOTE_PORT | 37834 |
| GATEWAY_INTERFACE | CGI/1.1 |
| SERVER_PROTOCOL | HTTP/1.0 |
| REQUEST_METHOD | GET |
| QUERY_STRING | XDEBUG_SESSION_STOP=1 |
| REQUEST_URI | /clanky/zmena-casu-je-zase-tu-zmena-kterou-vlastne-vubec-nepotrebujeme/nazory/vlakno/4/?XDEBUG_SESSION_STOP=1 |
| SCRIPT_NAME | /clanky/zmena-casu-je-zase-tu-zmena-kterou-vlastne-vubec-nepotrebujeme/nazory/vlakno/4/ |
| HTTP Request Headers | |
|---|---|
| HTTP Request | GET /clanky/zmena-casu-je-zase-tu-zmena-kterou-vlastne-vubec-nepotrebujeme/nazory/vlakno/4/?XDEBUG_SESSION_STOP=1 HTTP/1.0 |
| Host | lupa-martin.imho.cz |
| HTTP_X_FORWARDED_PROTO | https |
| Access-Control-Allow-Origin | * |
| Referrer-Policy | no-referrer-when-downgrade |
| X-Real-IP | 216.73.216.175 |
| Connection | close |
| accept | */* |
| user-agent | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) |
| accept-encoding | gzip, br, zstd, deflate |
| X-HTTPS | 1 |
| HTTP Response Headers | |
| Set-Cookie | XDEBUG_SESSION=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; SameSite=Lax |
| Set-Cookie | tracy-session=ae6d8930bc; expires=Sat, 21-Nov-2026 12:17:38 GMT; Max-Age=31557600; path=/; HttpOnly |
| X-Powered-By | Nette Framework 3 |
| X-Frame-Options | SAMEORIGIN |
| Set-Cookie | _nss=1; path=/; secure; HttpOnly; SameSite=Strict |
| Vary | X-Requested-With,Accept-Encoding |
| Content-Security-Policy | upgrade-insecure-requests |
| Content-Encoding | gzip |
| Referrer-Policy | no-referrer-when-downgrade |
| Access-Control-Allow-Origin | * |
| Access-Control-Allow-Headers | * |
| Connection | close |
| Content-Type | text/html; charset=utf-8 |
| BCMath support | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| bcmath.scale | 0 | 0 |
| BZip2 Support | Enabled |
| Stream Wrapper support | compress.bzip2:// |
| Stream Filter support | bzip2.decompress, bzip2.compress |
| BZip2 Version | 1.0.6, 6-Sept-2010 |
| Calendar support | enabled |
| PHP Version | 8.0.30 |
| Directive | Local Value | Master Value |
|---|---|---|
| allow_url_fopen | On | On |
| allow_url_include | Off | Off |
| arg_separator.input | & | & |
| arg_separator.output | & | & |
| auto_append_file | no value | no value |
| auto_globals_jit | On | On |
| auto_prepend_file | no value | no value |
| browscap | no value | no value |
| default_charset | UTF-8 | UTF-8 |
| default_mimetype | text/html | text/html |
| disable_classes | no value | no value |
| disable_functions | pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, | pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, |
| display_errors | On | Off |
| display_startup_errors | Off | Off |
| doc_root | no value | no value |
| docref_ext | no value | no value |
| docref_root | no value | no value |
| enable_dl | Off | Off |
| enable_post_data_reading | On | On |
| error_append_string | no value | no value |
| error_log | no value | no value |
| error_prepend_string | no value | no value |
| error_reporting | 32767 | 22527 |
| expose_php | Off | Off |
| extension_dir | /usr/lib/php/20200930 | /usr/lib/php/20200930 |
| file_uploads | On | On |
| hard_timeout | 2 | 2 |
| highlight.comment | #998; font-style: italic | #FF8000 |
| highlight.default | #000 | #0000BB |
| highlight.html | #06B | #000000 |
| highlight.keyword | #D24; font-weight: bold | #007700 |
| highlight.string | #080 | #DD0000 |
| html_errors | Off | On |
| ignore_repeated_errors | Off | Off |
| ignore_repeated_source | Off | Off |
| ignore_user_abort | Off | Off |
| implicit_flush | Off | Off |
| include_path | .:/usr/share/php:/www/virtual/martin/stable/php-libs:/www/virtual/martin/stable/lupa/app/libs:/www/virtual/martin/stable/php-libs/appShare/libs | .:/usr/share/php |
| input_encoding | no value | no value |
| internal_encoding | no value | no value |
| log_errors | Off | On |
| log_errors_max_len | 1024 | 1024 |
| mail.add_x_header | Off | Off |
| mail.force_extra_parameters | no value | no value |
| mail.log | no value | no value |
| max_execution_time | 3600 | 3600 |
| max_file_uploads | 20 | 20 |
| max_input_nesting_level | 64 | 64 |
| max_input_time | 60 | 60 |
| max_input_vars | 1000 | 1000 |
| max_multipart_body_parts | -1 | -1 |
| memory_limit | 256M | 256M |
| open_basedir | no value | no value |
| output_buffering | 4096 | 4096 |
| output_encoding | no value | no value |
| output_handler | no value | no value |
| post_max_size | 128M | 128M |
| precision | 14 | 14 |
| realpath_cache_size | 4096K | 4096K |
| realpath_cache_ttl | 120 | 120 |
| register_argc_argv | Off | Off |
| report_memleaks | On | On |
| report_zend_debug | Off | Off |
| request_order | GP | GP |
| sendmail_from | no value | no value |
| sendmail_path | /usr/sbin/sendmail -t -i | /usr/sbin/sendmail -t -i |
| serialize_precision | -1 | -1 |
| short_open_tag | Off | Off |
| SMTP | localhost | localhost |
| smtp_port | 25 | 25 |
| sys_temp_dir | no value | no value |
| syslog.facility | LOG_USER | LOG_USER |
| syslog.filter | no-ctrl | no-ctrl |
| syslog.ident | php | php |
| unserialize_callback_func | no value | no value |
| upload_max_filesize | 128M | 128M |
| upload_tmp_dir | no value | no value |
| user_dir | no value | no value |
| user_ini.cache_ttl | 300 | 300 |
| user_ini.filename | .user.ini | .user.ini |
| variables_order | GPCS | GPCS |
| xmlrpc_error_number | 0 | 0 |
| xmlrpc_errors | Off | Off |
| zend.assertions | -1 | -1 |
| zend.detect_unicode | On | On |
| zend.enable_gc | On | On |
| zend.exception_ignore_args | Off | On |
| zend.exception_string_param_max_len | 0 | 0 |
| zend.multibyte | Off | Off |
| zend.script_encoding | no value | no value |
| zend.signal_check | Off | Off |
| ctype functions | enabled |
| cURL support | enabled |
| cURL Information | 7.64.0 |
| Age | 4 |
| Features | |
| AsynchDNS | Yes |
| CharConv | No |
| Debug | No |
| GSS-Negotiate | No |
| IDN | Yes |
| IPv6 | Yes |
| krb4 | No |
| Largefile | Yes |
| libz | Yes |
| NTLM | Yes |
| NTLMWB | Yes |
| SPNEGO | Yes |
| SSL | Yes |
| SSPI | No |
| TLS-SRP | Yes |
| HTTP2 | Yes |
| GSSAPI | Yes |
| KERBEROS5 | Yes |
| UNIX_SOCKETS | Yes |
| PSL | Yes |
| HTTPS_PROXY | Yes |
| MULTI_SSL | No |
| BROTLI | No |
| Protocols | dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp |
| Host | x86_64-pc-linux-gnu |
| SSL Version | OpenSSL/1.1.1d |
| ZLib Version | 1.2.11 |
| libSSH Version | libssh2/1.8.0 |
| Directive | Local Value | Master Value |
|---|---|---|
| curl.cainfo | no value | no value |
| date/time support | enabled |
| timelib version | 2020.03 |
| "Olson" Timezone Database Version | 0.system |
| Timezone Database | internal |
| Default timezone | Europe/Berlin |
| Directive | Local Value | Master Value |
|---|---|---|
| date.default_latitude | 31.7667 | 31.7667 |
| date.default_longitude | 35.2333 | 35.2333 |
| date.sunrise_zenith | 90.833333 | 90.833333 |
| date.sunset_zenith | 90.833333 | 90.833333 |
| date.timezone | no value | no value |
| DOM/XML | enabled |
| DOM/XML API Version | 20031129 |
| libxml Version | 2.9.14 |
| HTML Support | enabled |
| XPath Support | enabled |
| XPointer Support | enabled |
| Schema Support | enabled |
| RelaxNG Support | enabled |
| EXIF Support | enabled |
| Supported EXIF Version | 0220 |
| Supported filetypes | JPEG, TIFF |
| Multibyte decoding support using mbstring | enabled |
| Extended EXIF tag formats | Canon, Casio, Fujifilm, Nikon, Olympus, Samsung, Panasonic, DJI, Sony, Pentax, Minolta, Sigma, Foveon, Kyocera, Ricoh, AGFA, Epson |
| Directive | Local Value | Master Value |
|---|---|---|
| exif.decode_jis_intel | JIS | JIS |
| exif.decode_jis_motorola | JIS | JIS |
| exif.decode_unicode_intel | UCS-2LE | UCS-2LE |
| exif.decode_unicode_motorola | UCS-2BE | UCS-2BE |
| exif.encode_jis | no value | no value |
| exif.encode_unicode | ISO-8859-15 | ISO-8859-15 |
| FFI support | enabled |
|---|
| Directive | Local Value | Master Value |
|---|---|---|
| ffi.enable | preload | preload |
| ffi.preload | no value | no value |
| fileinfo support | enabled |
| libmagic | 539 |
| Input Validation and Filtering | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| filter.default | unsafe_raw | unsafe_raw |
| filter.default_flags | no value | no value |
| FTP support | enabled |
| FTPS support | enabled |
| GD Support | enabled |
| GD headers Version | 2.3.3 |
| GD library Version | 2.2.5 |
| FreeType Support | enabled |
| FreeType Linkage | with freetype |
| GIF Read Support | enabled |
| GIF Create Support | enabled |
| JPEG Support | enabled |
| PNG Support | enabled |
| WBMP Support | enabled |
| XPM Support | enabled |
| XBM Support | enabled |
| WebP Support | enabled |
| BMP Support | enabled |
| TGA Read Support | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| gd.jpeg_ignore_warning | 1 | 1 |
| GetText Support | enabled |
| gmp support | enabled |
| GMP version | 6.1.2 |
| hash support | enabled |
| Hashing Engines | md2 md4 md5 sha1 sha224 sha256 sha384 sha512/224 sha512/256 sha512 sha3-224 sha3-256 sha3-384 sha3-512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost gost-crypto adler32 crc32 crc32b crc32c fnv132 fnv1a32 fnv164 fnv1a64 joaat haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5 |
| MHASH support | Enabled |
| MHASH API Version | Emulated Support |
| iconv support | enabled |
| iconv implementation | glibc |
| iconv library version | 2.28 |
| Directive | Local Value | Master Value |
|---|---|---|
| iconv.input_encoding | no value | no value |
| iconv.internal_encoding | no value | no value |
| iconv.output_encoding | no value | no value |
| igbinary support | enabled |
| igbinary version | 3.2.13 |
| igbinary APCu serializer ABI | 0 |
| igbinary session support | yes |
| Directive | Local Value | Master Value |
|---|---|---|
| igbinary.compact_strings | On | On |
| imagick module | enabled |
|---|---|
| imagick module version | 3.6.0 |
| imagick classes | Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel |
| Imagick compiled with ImageMagick version | ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org |
| Imagick using ImageMagick library version | ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org |
| ImageMagick copyright | © 1999-2019 ImageMagick Studio LLC |
| ImageMagick release date | 20190101 |
| ImageMagick number of supported formats: | 242 |
| ImageMagick supported formats | 3FR, 3G2, 3GP, AAI, AI, ART, ARW, AVI, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CRW, CUR, CUT, DATA, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FILE, FITS, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, GV, H, HALD, HDR, HEIC, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, J2C, J2K, JBG, JBIG, JNG, JNX, JP2, JPC, JPE, JPEG, JPG, JPM, JPS, JPT, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAGICK, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIFF, VIPS, VST, WBMP, WEBP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV |
| Directive | Local Value | Master Value |
|---|---|---|
| imagick.allow_zero_dimension_images | 0 | 0 |
| imagick.locale_fix | 0 | 0 |
| imagick.progress_monitor | 0 | 0 |
| imagick.set_single_thread | 1 | 1 |
| imagick.shutdown_sleep_count | 10 | 10 |
| imagick.skip_version_check | 1 | 1 |
| IMAP c-Client Version | 2007f |
| SSL Support | enabled |
| Kerberos Support | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| imap.enable_insecure_rsh | Off | Off |
| Internationalization support | enabled |
|---|---|
| ICU version | 65.1 |
| ICU Data version | 65.1 |
| ICU Unicode version | 12.1 |
| Directive | Local Value | Master Value |
|---|---|---|
| intl.default_locale | cs-CZ | no value |
| intl.error_level | 0 | 0 |
| intl.use_exceptions | Off | Off |
| json support | enabled |
| LDAP Support | enabled |
| Total Links | 0/unlimited |
| API Version | 3001 |
| Vendor Name | OpenLDAP |
| Vendor Version | 20447 |
| SASL Support | Enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| ldap.max_links | Unlimited | Unlimited |
| libXML support | active |
| libXML Compiled Version | 2.9.14 |
| libXML Loaded Version | 20912 |
| libXML streams | enabled |
| Multibyte Support | enabled |
| Multibyte string engine | libmbfl |
| HTTP input encoding translation | disabled |
| libmbfl version | 1.3.2 |
| mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1. |
|---|
| Multibyte (japanese) regex support | enabled |
| Multibyte regex (oniguruma) version | 6.9.1 |
| Directive | Local Value | Master Value |
|---|---|---|
| mbstring.detect_order | no value | no value |
| mbstring.encoding_translation | Off | Off |
| mbstring.http_input | no value | no value |
| mbstring.http_output | no value | no value |
| mbstring.http_output_conv_mimetypes | ^(text/|application/xhtml\+xml) | ^(text/|application/xhtml\+xml) |
| mbstring.internal_encoding | no value | no value |
| mbstring.language | neutral | neutral |
| mbstring.regex_retry_limit | 1000000 | 1000000 |
| mbstring.regex_stack_limit | 100000 | 100000 |
| mbstring.strict_detection | Off | Off |
| mbstring.substitute_character | no value | no value |
| MysqlI Support | enabled |
|---|---|
| Client API library version | mysqlnd 8.0.30 |
| Active Persistent Links | 0 |
| Inactive Persistent Links | 0 |
| Active Links | 3 |
| Directive | Local Value | Master Value |
|---|---|---|
| mysqli.allow_local_infile | Off | Off |
| mysqli.allow_persistent | On | On |
| mysqli.default_host | no value | no value |
| mysqli.default_port | 3306 | 3306 |
| mysqli.default_pw | no value | no value |
| mysqli.default_socket | /var/run/mysqld/mysqld.sock | /var/run/mysqld/mysqld.sock |
| mysqli.default_user | no value | no value |
| mysqli.max_links | Unlimited | Unlimited |
| mysqli.max_persistent | Unlimited | Unlimited |
| mysqli.reconnect | Off | Off |
| mysqli.rollback_on_cached_plink | Off | Off |
| mysqlnd | enabled |
|---|---|
| Version | mysqlnd 8.0.30 |
| Compression | supported |
| core SSL | supported |
| extended SSL | supported |
| Command buffer size | 4096 |
| Read buffer size | 32768 |
| Read timeout | 86400 |
| Collecting statistics | Yes |
| Collecting memory statistics | No |
| Tracing | n/a |
| Loaded plugins | mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_caching_sha2_password,auth_plugin_sha256_password |
| API Extensions | mysqli,pdo_mysql |
| ODBC Support | enabled |
|---|---|
| Active Persistent Links | 0 |
| Active Links | 0 |
| ODBC library | unixODBC |
| ODBCVER | 0x0380 |
| ODBC_CFLAGS | -I/usr/include |
| ODBC_LFLAGS | -L/usr/lib |
| ODBC_LIBS | -lodbc |
| Directive | Local Value | Master Value |
|---|---|---|
| odbc.allow_persistent | On | On |
| odbc.check_persistent | On | On |
| odbc.default_cursortype | Static cursor | Static cursor |
| odbc.default_db | no value | no value |
| odbc.default_pw | no value | no value |
| odbc.default_user | no value | no value |
| odbc.defaultbinmode | return as is | return as is |
| odbc.defaultlrl | return up to 4096 bytes | return up to 4096 bytes |
| odbc.max_links | Unlimited | Unlimited |
| odbc.max_persistent | Unlimited | Unlimited |
| OpenSSL support | enabled |
| OpenSSL Library Version | OpenSSL 1.1.1d 10 Sep 2019 |
| OpenSSL Header Version | OpenSSL 1.1.1n 15 Mar 2022 |
| Openssl default config | /usr/lib/ssl/openssl.cnf |
| Directive | Local Value | Master Value |
|---|---|---|
| openssl.cafile | no value | no value |
| openssl.capath | no value | no value |
| PCRE (Perl Compatible Regular Expressions) Support | enabled |
| PCRE Library Version | 10.39 2021-10-29 |
| PCRE Unicode Version | 14.0.0 |
| PCRE JIT Support | enabled |
| PCRE JIT Target | x86 64bit (little endian + unaligned) |
| Directive | Local Value | Master Value |
|---|---|---|
| pcre.backtrack_limit | 1000000 | 1000000 |
| pcre.jit | 1 | 1 |
| pcre.recursion_limit | 100000 | 100000 |
| PDO support | enabled |
|---|---|
| PDO drivers | firebird, mysql, odbc, sqlite, sqlsrv |
| PDO Driver for Firebird | enabled |
|---|---|
| Client Library Version | LI-V6.3.5.33100 Firebird 3.0 |
| PDO Driver for MySQL | enabled |
|---|---|
| Client API version | mysqlnd 8.0.30 |
| Directive | Local Value | Master Value |
|---|---|---|
| pdo_mysql.default_socket | /var/run/mysqld/mysqld.sock | /var/run/mysqld/mysqld.sock |
| PDO Driver for ODBC (unixODBC) | enabled |
|---|---|
| ODBC Connection Pooling | Enabled, strict matching |
| PDO Driver for SQLite 3.x | enabled |
|---|---|
| SQLite Library | 3.27.2 |
| pdo_sqlsrv support | enabled |
|---|---|
| ExtensionVer | 5.11.0 |
| Directive | Local Value | Master Value |
|---|---|---|
| pdo_sqlsrv.client_buffer_max_kb_size | 10240 | 10240 |
| pdo_sqlsrv.log_severity | 0 | 0 |
| pdo_sqlsrv.report_additional_errors | 1 | 1 |
| pdo_sqlsrv.set_locale_info | 2 | 2 |
| Phar: PHP Archive support | enabled |
|---|---|
| Phar API version | 1.1.1 |
| Phar-based phar archives | enabled |
| Tar-based phar archives | enabled |
| ZIP-based phar archives | enabled |
| gzip compression | enabled |
| bzip2 compression | enabled |
| Native OpenSSL support | enabled |
|
Phar based on pear/PHP_Archive, original concept by Davey Shafik. Phar fully realized by Gregory Beaver and Marcus Boerger. Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle. |
| Directive | Local Value | Master Value |
|---|---|---|
| phar.cache_list | no value | no value |
| phar.readonly | On | On |
| phar.require_hash | On | On |
| POSIX support | enabled |
| PSpell Support | enabled |
| Readline Support | enabled |
|---|---|
| Readline library | EditLine wrapper |
| Directive | Local Value | Master Value |
|---|---|---|
| cli.pager | no value | no value |
| cli.prompt | \b \> | \b \> |
| Reflection | enabled |
| Session Support | enabled |
| Registered save handlers | files user |
| Registered serializer handlers | php_serialize php php_binary igbinary |
| Directive | Local Value | Master Value |
|---|---|---|
| session.auto_start | Off | Off |
| session.cache_expire | 180 | 180 |
| session.cache_limiter | nocache | nocache |
| session.cookie_domain | no value | no value |
| session.cookie_httponly | no value | no value |
| session.cookie_lifetime | 0 | 0 |
| session.cookie_path | / | / |
| session.cookie_samesite | no value | no value |
| session.cookie_secure | 0 | 0 |
| session.gc_divisor | 1000 | 1000 |
| session.gc_maxlifetime | 1440 | 1440 |
| session.gc_probability | 0 | 0 |
| session.lazy_write | On | On |
| session.name | PHPSESSID | PHPSESSID |
| session.referer_check | no value | no value |
| session.save_handler | files | files |
| session.save_path | /var/lib/php/sessions | /var/lib/php/sessions |
| session.serialize_handler | php | php |
| session.sid_bits_per_character | 5 | 5 |
| session.sid_length | 26 | 26 |
| session.upload_progress.cleanup | On | On |
| session.upload_progress.enabled | On | On |
| session.upload_progress.freq | 1% | 1% |
| session.upload_progress.min_freq | 1 | 1 |
| session.upload_progress.name | PHP_SESSION_UPLOAD_PROGRESS | PHP_SESSION_UPLOAD_PROGRESS |
| session.upload_progress.prefix | upload_progress_ | upload_progress_ |
| session.use_cookies | 1 | 1 |
| session.use_only_cookies | 1 | 1 |
| session.use_strict_mode | 0 | 0 |
| session.use_trans_sid | 0 | 0 |
| shmop support | enabled |
| SimpleXML support | enabled |
| Schema support | enabled |
| NET-SNMP Support | enabled |
| NET-SNMP Version | 5.7.3 |
| Soap Client | enabled |
| Soap Server | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| soap.wsdl_cache | 1 | 1 |
| soap.wsdl_cache_dir | /tmp | /tmp |
| soap.wsdl_cache_enabled | On | On |
| soap.wsdl_cache_limit | 5 | 5 |
| soap.wsdl_cache_ttl | 86400 | 86400 |
| Sockets Support | enabled |
| sodium support | enabled |
|---|---|
| libsodium headers version | 1.0.18 |
| libsodium library version | 1.0.18 |
| SPL support | enabled |
|---|---|
| Interfaces | OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject |
| Classes | AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException |
| SQLite3 support | enabled |
|---|---|
| SQLite Library | 3.27.2 |
| Directive | Local Value | Master Value |
|---|---|---|
| sqlite3.defensive | On | On |
| sqlite3.extension_dir | no value | no value |
| sqlsrv support | enabled |
|---|---|
| ExtensionVer | 5.11.0 |
| Directive | Local Value | Master Value |
|---|---|---|
| sqlsrv.ClientBufferMaxKBSize | 10240 | 10240 |
| sqlsrv.LogSeverity | 0 | 0 |
| sqlsrv.LogSubsystems | 0 | 0 |
| sqlsrv.SetLocaleInfo | 2 | 2 |
| sqlsrv.WarningsReturnAsErrors | On | On |
| Dynamic Library Support | enabled |
| Path to sendmail | /usr/sbin/sendmail -t -i |
| Directive | Local Value | Master Value |
|---|---|---|
| assert.active | On | On |
| assert.bail | Off | Off |
| assert.callback | no value | no value |
| assert.exception | On | On |
| assert.warning | On | On |
| auto_detect_line_endings | Off | Off |
| default_socket_timeout | 60 | 60 |
| from | no value | no value |
| session.trans_sid_hosts | no value | no value |
| session.trans_sid_tags | a=href,area=href,frame=src,form= | a=href,area=href,frame=src,form= |
| unserialize_max_depth | 4096 | 4096 |
| url_rewriter.hosts | no value | no value |
| url_rewriter.tags | form= | form= |
| user_agent | no value | no value |
| sysvmsg support | enabled |
| sysvsem support | enabled |
| sysvshm support | enabled |
| Tidy support | enabled |
| libTidy Version | 5.6.0 |
| libTidy Release | 2017/11/25 |
| Directive | Local Value | Master Value |
|---|---|---|
| tidy.clean_output | no value | no value |
| tidy.default_config | no value | no value |
| Tokenizer Support | enabled |
| Version | 3.2.1 |
| Support Xdebug on Patreon, GitHub, or as a business | |
| Enabled Features (through 'xdebug.mode' setting) | ||
|---|---|---|
| Feature | Enabled/Disabled | Docs |
| Development Helpers | ✘ disabled | ⊕ |
| Coverage | ✘ disabled | ⊕ |
| GC Stats | ✘ disabled | ⊕ |
| Profiler | ✘ disabled | ⊕ |
| Step Debugger | ✔ enabled | ⊕ |
| Tracing | ✘ disabled | ⊕ |
| Optional Features | |
|---|---|
| Compressed File Support | no |
| Clock Source | clock_gettime |
| 'xdebug://gateway' pseudo-host support | yes |
| 'xdebug://nameserver' pseudo-host support | yes |
| Systemd Private Temp Directory | /tmp/systemd-private-3221d60dabd645c689c09873db6cf172-apache2.service-95ACom |
| Debugger | enabled |
|---|---|
| IDE Key | no value |
| Directive | Local Value | Master Value |
|---|---|---|
| xdebug.auto_trace | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.cli_color | 0 | 0 |
| xdebug.client_discovery_header | HTTP_X_FORWARDED_FOR,REMOTE_ADDR | HTTP_X_FORWARDED_FOR,REMOTE_ADDR |
| xdebug.client_host | localhost | localhost |
| xdebug.client_port | 9003 | 9003 |
| xdebug.cloud_id | no value | no value |
| xdebug.collect_assignments | Off | Off |
| xdebug.collect_includes | (setting removed in Xdebug 3) | (setting removed in Xdebug 3) |
| xdebug.collect_params | (setting removed in Xdebug 3) | (setting removed in Xdebug 3) |
| xdebug.collect_return | Off | Off |
| xdebug.collect_vars | (setting removed in Xdebug 3) | (setting removed in Xdebug 3) |
| xdebug.connect_timeout_ms | 200 | 200 |
| xdebug.coverage_enable | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.default_enable | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.discover_client_host | On | On |
| xdebug.dump.COOKIE | no value | no value |
| xdebug.dump.ENV | no value | no value |
| xdebug.dump.FILES | no value | no value |
| xdebug.dump.GET | no value | no value |
| xdebug.dump.POST | no value | no value |
| xdebug.dump.REQUEST | no value | no value |
| xdebug.dump.SERVER | no value | no value |
| xdebug.dump.SESSION | no value | no value |
| xdebug.dump_globals | On | On |
| xdebug.dump_once | On | On |
| xdebug.dump_undefined | Off | Off |
| xdebug.file_link_format | no value | no value |
| xdebug.filename_format | no value | no value |
| xdebug.force_display_errors | Off | Off |
| xdebug.force_error_reporting | 0 | 0 |
| xdebug.gc_stats_enable | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.gc_stats_output_dir | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.gc_stats_output_name | gcstats.%p | gcstats.%p |
| xdebug.halt_level | 0 | 0 |
| xdebug.idekey | no value | no value |
| xdebug.log | no value | no value |
| xdebug.log_level | 7 | 7 |
| xdebug.max_nesting_level | 256 | 256 |
| xdebug.max_stack_frames | -1 | -1 |
| xdebug.mode | debug | debug |
| xdebug.output_dir | /tmp | /tmp |
| xdebug.overload_var_dump | (setting removed in Xdebug 3) | (setting removed in Xdebug 3) |
| xdebug.profiler_append | Off | Off |
| xdebug.profiler_enable | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.profiler_enable_trigger | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.profiler_enable_trigger_value | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.profiler_output_dir | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.profiler_output_name | cachegrind.out.%p | cachegrind.out.%p |
| xdebug.remote_autostart | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_connect_back | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_enable | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_host | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_log | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_log_level | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_mode | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_port | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.remote_timeout | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.scream | Off | Off |
| xdebug.show_error_trace | Off | Off |
| xdebug.show_exception_trace | Off | Off |
| xdebug.show_local_vars | Off | Off |
| xdebug.show_mem_delta | (setting removed in Xdebug 3) | (setting removed in Xdebug 3) |
| xdebug.start_upon_error | default | default |
| xdebug.start_with_request | default | default |
| xdebug.trace_enable_trigger | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.trace_enable_trigger_value | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.trace_format | 0 | 0 |
| xdebug.trace_options | 0 | 0 |
| xdebug.trace_output_dir | (setting renamed in Xdebug 3) | (setting renamed in Xdebug 3) |
| xdebug.trace_output_name | trace.%c | trace.%c |
| xdebug.trigger_value | no value | no value |
| xdebug.use_compression | 0 | 0 |
| xdebug.var_display_max_children | 128 | 128 |
| xdebug.var_display_max_data | 512 | 512 |
| xdebug.var_display_max_depth | 3 | 3 |
| XML Support | active |
| XML Namespace Support | active |
| libxml2 Version | 2.9.14 |
| XMLReader | enabled |
| XMLRPC extension version | 1.0.0RC3 |
| core library version | xmlrpc-epi v. 0.54 |
| author | Dan Libby |
| homepage | http://xmlrpc-epi.sourceforge.net |
| open sourced by | Epinions.com |
| XMLWriter | enabled |
| XSL | enabled |
| libxslt Version | 1.1.32 |
| libxslt compiled against libxml Version | 2.9.4 |
| EXSLT | enabled |
| libexslt Version | 1.1.32 |
| Opcode Caching | Up and Running |
| Optimization | Disabled |
| SHM Cache | Enabled |
| File Cache | Disabled |
| JIT | Disabled |
| Startup | OK |
| Shared memory model | mmap |
| Cache hits | 34456623 |
| Cache misses | 2928 |
| Used memory | 90277408 |
| Free memory | 43940320 |
| Wasted memory | 0 |
| Interned Strings Used memory | 6290984 |
| Interned Strings Free memory | 8 |
| Cached scripts | 2928 |
| Cached keys | 3717 |
| Max keys | 16229 |
| OOM restarts | 0 |
| Hash keys restarts | 0 |
| Manual restarts | 0 |
| Directive | Local Value | Master Value |
|---|---|---|
| opcache.blacklist_filename | no value | no value |
| opcache.consistency_checks | 0 | 0 |
| opcache.dups_fix | Off | Off |
| opcache.enable | On | On |
| opcache.enable_cli | Off | Off |
| opcache.enable_file_override | Off | Off |
| opcache.error_log | no value | no value |
| opcache.file_cache | no value | no value |
| opcache.file_cache_consistency_checks | On | On |
| opcache.file_cache_only | Off | Off |
| opcache.file_update_protection | 2 | 2 |
| opcache.force_restart_timeout | 180 | 180 |
| opcache.huge_code_pages | Off | Off |
| opcache.interned_strings_buffer | 8 | 8 |
| opcache.jit | no value | no value |
| opcache.jit_bisect_limit | 0 | 0 |
| opcache.jit_blacklist_root_trace | 16 | 16 |
| opcache.jit_blacklist_side_trace | 8 | 8 |
| opcache.jit_buffer_size | 0 | 0 |
| opcache.jit_debug | 0 | 0 |
| opcache.jit_hot_func | 127 | 127 |
| opcache.jit_hot_loop | 64 | 64 |
| opcache.jit_hot_return | 8 | 8 |
| opcache.jit_hot_side_exit | 8 | 8 |
| opcache.jit_max_exit_counters | 8192 | 8192 |
| opcache.jit_max_loop_unrolls | 8 | 8 |
| opcache.jit_max_polymorphic_calls | 2 | 2 |
| opcache.jit_max_recursive_calls | 2 | 2 |
| opcache.jit_max_recursive_returns | 2 | 2 |
| opcache.jit_max_root_traces | 1024 | 1024 |
| opcache.jit_max_side_traces | 128 | 128 |
| opcache.jit_prof_threshold | 0.005 | 0.005 |
| opcache.lockfile_path | /tmp | /tmp |
| opcache.log_verbosity_level | 1 | 1 |
| opcache.max_accelerated_files | 10000 | 10000 |
| opcache.max_file_size | 0 | 0 |
| opcache.max_wasted_percentage | 5 | 5 |
| opcache.memory_consumption | 128 | 128 |
| opcache.opt_debug_level | 0 | 0 |
| opcache.optimization_level | 0 | 0x7FFEBFFF |
| opcache.preferred_memory_model | no value | no value |
| opcache.preload | no value | no value |
| opcache.preload_user | no value | no value |
| opcache.protect_memory | Off | Off |
| opcache.record_warnings | Off | Off |
| opcache.restrict_api | no value | no value |
| opcache.revalidate_freq | 2 | 2 |
| opcache.revalidate_path | Off | Off |
| opcache.save_comments | On | On |
| opcache.use_cwd | On | On |
| opcache.validate_permission | Off | Off |
| opcache.validate_root | Off | Off |
| opcache.validate_timestamps | On | On |
| Zip | enabled |
| Zip version | 1.19.5 |
| Libzip version | 1.7.3 |
| BZIP2 compression | Yes |
| XZ compression | No |
| ZSTD compression | No |
| AES-128 encryption | Yes |
| AES-192 encryption | Yes |
| AES-256 encryption | Yes |
| ZLib Support | enabled |
|---|---|
| Stream Wrapper | compress.zlib:// |
| Stream Filter | zlib.inflate, zlib.deflate |
| Compiled Version | 1.2.11 |
| Linked Version | 1.2.11 |
| Directive | Local Value | Master Value |
|---|---|---|
| zlib.output_compression | Off | Off |
| zlib.output_compression_level | -1 | -1 |
| zlib.output_handler | no value | no value |
| Module Name |
|---|
array (1)0 => array (7)| 'name' => 'default output handler' | 'type' => 0 | 'flags' => 20592 | 'level' => 0 | 'chunk_size' => 4096 | 'buffer_size' => 159744 | 'buffer_used' => 2454
| Host | 'lupa-martin.imho.cz'
|
|---|---|
| HTTP_X_FORWARDED_PROTO | 'https'
|
| Access-Control-Allow-Origin | '*'
|
| Referrer-Policy | 'no-referrer-when-downgrade'
|
| X-Real-IP | '216.73.216.175'
|
| Connection | 'close'
|
| accept | '*/*'
|
| user-agent | 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)'
|
| accept-encoding | 'gzip, br, zstd, deflate'
|
| X-HTTPS | '1'
|
| XDEBUG_SESSION_STOP | '1'
|
|---|
empty
empty
| Set-Cookie | 'XDEBUG_SESSION=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; SameSite=Lax'
|
|---|---|
| Set-Cookie | 'tracy-session=ae6d8930bc; expires=Sat, 21-Nov-2026 12:17:38 GMT; Max-Age=31557600; path=/; HttpOnly'
|
| X-Powered-By | 'Nette Framework 3'
|
| Content-Type | 'text/html; charset=utf-8'
|
| X-Frame-Options | 'SAMEORIGIN'
|
| Set-Cookie | '_nss=1; path=/; secure; HttpOnly; SameSite=Strict'
|
| Vary | 'X-Requested-With'
|
| Content-Security-Policy | 'upgrade-insecure-requests'
|
Headers have been sent, output started at .../latte/app-templates-commonHeader.latte--99237deb2d.php:61 source
51: echo '" 52: href="https://www.lupa.cz'; 53: echo LR\Filters::escapeHtmlAttr($this->global->uiPresenter->linkByLabel('@Rss:Actualities:Actualities')); 54: echo '" type="application/rss+xml"> 55: <link rel="alternate" title="'; 56: echo LR\Filters::escapeHtmlAttr(($this->filters->translate)('Lupa.cz')) /* line 7 */; 57: echo ' - '; 58: echo LR\Filters::escapeHtmlAttr(($this->filters->translate)('články a aktuality')) /* line 7 */; 59: echo '" 60: href="https://www.lupa.cz'; 61: echo LR\Filters::escapeHtmlAttr($this->global->uiPresenter->linkByLabel('@Rss:Actualities:ArticlesAndActualities')); 62: echo '" type="application/rss+xml"> 63: '; 64: } 65: