Dohání mě chuť zase trochu psát. Tentokrát si dáme něco technomarketingoidního. Rich snippets. Schema.org. Microdata. Že nevíte, o co jde? Měli byste, pokud chcete vyčnívat nad ostatními v přirozených výsledcích vyhledávání Google. Díky strukturovaným mikrodatům určujícím co bude v dané části obsahu vlastně popsáno, můžete výrazně odlišit svůj výsledek vyhledávání od těch ostatních a to dost znatelně.
Vyhledávače na první dobrou netuší, o čem píšete a jak strukturujete své stránky. Který odstavec něco popisuje, kde jsou ceny, kde se mluví / recenzuje / komentuje. Netuší zda popisujete něco, co pomůže zdraví nebo naopak píšete o nějaké firmě, osobě či filmu. Vše mu však můžete do značné míry usnadit právě díky strukturovaným datům.
Strukturovaná data mají několik implementací z ních asi nejvíce se prosadilo Schema.org. Pomocí této implementace můžete vyhledávači s podporou mikrodat (mezi něž patří právě Google) sdělit, že popisujete výrobek, jakou má cenu, co o něm píší zákazníci atd. Snadno upřesníte, že zde jde o popis události, tam zase o audio/video a jinde o informace o závažné nemoci a prostředcích, které mohou pomoci její léčbě.
Práce s mikrodaty přináší ovoce z mého pohledu ve dvou rovinách. Především vyhledávač může lépe chápat obsah webu a dost možná si jej tak lépe zatřídí a využijte mikrodat i ve svém indexu. To může ve výsledku zvýšit relevanci takové zaindexované stránky vůči dotazu položenému uživatelem vyhledávače – zejména v případě long tailu. Druhou rovinou je pak samotná prezentace strukturovaných dat ve výsledcích vyhledávání Google.
V samotných výsledcích vyhledávání si pak díky strukturovaným datům můžete výrazně pomoci, jelikož Vás mohou odlišit od konkurence. Jak? Vypadá to nějak tak, jako na obrázku níže, kde je prezentován produkt, který prodávají velcí hráči na trhu i menší eshopy. Ten můj má implementovaná strukturovaná data pro produkty, ale i další entity. V případě tohoto produktu se pak díky tomu v organickém vyhledávání kromě běžného snippetu objeví trošku košatější kousek doplněný o cenu produktu a hodnocení zákazníků.
Samozřejmě to má i svá proti. Jednak můžete mít z větší části negativní hodnocení produktů, pak se tím asi nebudete moc chlubit a selektivně tak budete prostě mikrodata pro Reviews ignorovat a vyhledávačům neposílat. Další a z mého pohledu výrazně nebezpečnější nevýhodou je aktuálnost strukturovaných dat a jejich prezentace v organicu. Zde např. uvedená cena je sice krásná, ale třeba už den dva je fakticky jiná. Proč?
Záleží dost na tom, jak často k vám chodí strýček Google na návštěvu pro aktualizaci svého indexu. Pokud to není moc často, pak doporučuji pracovat s často aktualizovanými daty opatrně a dobře rozmyslet, která z nich „obalíte schématy“. Pokud třeba produkt zdražíte a potenciální zákazník z vyhledávače přijde v očekávání nižší ceny, asi to nedopadne moc dobře.
Nicméně i pokud přehlédneme schémata pro Reviews a Price, stále máme dost možností jak svá data v eshopu (i jinde – třeba na blogu nebo firemním webu) strukturovat a jak zvýšit viditelnost v organicu a tím zvýšit míru prokliků z výsledků vyhledávání. A to je podle mě asi nejdůležitější a nejzásadnější přínos strukturovaných dat pro SEO. Čím máte vyšší míru prokliku, tím hodnotí váš web Google jako více relevantní a může jej posouvat výš ve výsledích vyhledávání. A to přeci chcete ne?
Já ne, já chci víc prodejů, víc konverzí v mých affil webech, víc relevantních zákazníků na mém shopu … ale chápu, většina českých online podnikatelů zamrzla na touze po první pozici na obecná klíčová slova a co možná největší návštěvnosti. Ale o tom už zase jindy.
Specialista internetového marketingu a ecommerce konzultant na volné noze. Uznávaný odborník na platformu Magento eshop, PHP/MySQL vývojář a affiliate nadšenec.
Správce PPC kampaní (se zaměřením na Google AdWords, Sklik) s mnoha lety zkušeností z mediální agentury i práce na volné noze. Konzultant ecommerce a SEO, podpory online prodeje, optimalizace konverzního poměru, srovnávačů zboží a dalších souvisejících nástrojů internetového marketingu. Propagátor a evangelista obsahového marketingu (content marketing) a copywriter.
Standa je diplomovaným specialistou v oboru Informatika ve státní správě a autoritou v oboru internetového marketingu, za kterou stojí reference jako je iDNES (MAFRA a.s.), TV Nova (CET 21 s.r.o.), Toyota Material Handling CZ s.r.o., TRIOLA a.s., Eurocert a.s., Antares a.s. a mnohé další. Více o službách a projektech pod značkou Open Mage najdete na webu www.openmage.cz.
Přečteno 145 495×
Přečteno 89 010×
Přečteno 69 433×
Přečteno 66 540×
Přečteno 57 935×
Warning
File: .../stable/php-libs/appShare/libs/Blogs/BlogsSelection.php:147
137: ->where("opinions.status = %s", "active") 138: ->orderBy("opinions.insert_date DESC") 139: ->limit($count); 140: $data = $query->fetchAll(); 141: foreach ($data as $row) { 142: $row->user_deleted = null; 143: if ($row->user_id) { 144: $user = dibi::getConnection('usersys') 145: ->query('SELECT * FROM users WHERE user_id = %i', $row->user_id) 146: ->fetch(); 147: $row->user_deleted = $user->deleted; 148: } 149: } 150: // ulozeni do CACHE 151: $cache->save($cacheKey, $data, array(
22: protected $commentsCount = 5; 23: 24: public function __construct($blogId = 0) { 25: $this->blogId = $blogId; 26: } 27: 28: public function render() { 29: if (!$this->blogId) return; 30: 31: // [future] Zrefaktorovat komponentu tak, aby se jí daly předávat závislosti 32: $this->getTemplate()->opinions = BlogsSelection::getLastOpinionsForBlog($this->blogId, $this->commentsCount, $this->getPresenter()->getContext()->getByType(CacheFactory::class), $this->getPresenter()->getContext()->getByType(Shared_Blogs_Helper::class)); 33: // render sablony zajisti predek 34: parent::render(); 35: } 36:
| $blogId | 1851
 | 
|---|---|
| $count | 5
 | 
| $cacheFactory | |
| $blogsHelper | 
90: $control->setExtraParameters($parameters[\Shared_BaseComponent::EXTRA_PARAM_NAME]); 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:
87: ob_end_clean(); 88: } else { 89: echo ob_get_clean(); 90: } 91: } 92: ob_start(function () {}); 93: try { 94: echo '<div class="section section--sidebar-in">'; 95: ob_start(); 96: try { 97: IInfo\LatteMacros::renderControl("lastBlogComments", "render", [], $this->global->uiControl); 98: } finally { 99: $ʟ_ifc[3] = rtrim(ob_get_flush()) === ''; 100: } 101: echo '</div>
1: {extends '../@default.latte'} 2: 3: 4: {block sidebarMain-aboveWrapper} 5: {control footerInfo} 6: {/block} 7: 8: 9: {block sidebarMain-content} 10: <div class="page-block--actualities page-block design-box"> 11: {control blogAuthorInfo} 12: <div class="section section--sidebar-in" n:ifcontent>{control htmlBadges}</div> 13: <div class="section section--sidebar-in" n:ifcontent>{control mostReadBlogArticles}</div> 14: <div class="section section--sidebar-in" n:ifcontent>{control lastBlogComments}</div> 15: <div class="section section--sidebar-in" n:ifcontent>{control blogsLabelsTagcloud}</div>
| $control | |
|---|---|
| $method | 'render'
 | 
| $parameters | array (0)
 | 
| $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 sidebarMain-content'
 | 
89: public function blockSidebarMain_adverts_sticky_1(array $ʟ_args): void 90: { 91: extract($this->params); 92: extract($ʟ_args); 93: unset($ʟ_args); 94: echo '<div class="page-block--ad_square1 page-block design-box"> 95: '; 96: IInfo\LatteMacros::renderControl("ad", "render", ['sidebar-sticky-1'], $this->global->uiControl); 97: $this->renderBlock('sidebarMain-adverts--sticky-1-aditional-content', get_defined_vars()) /* line 13 */; 98: echo "\n"; 99: $this->renderBlock('sidebarMain-content', get_defined_vars()) /* line 14 */; 100: echo ' 101: </div> 102: '; 103: }
4: 5: {block content}{* [future] possibly remove this block completely since the layout (DOM structure) of all pages should be the same. difference(s) should be present in CSS if needed *} 6: <div id="sidebar" class="js-sticker-wrapper sidebar layout-columns__item--sidebar layout-columns__item design-sidebar design-tile--version-2 design-tile"> 7: 8: {block sidebarMain-adSidebarPartner} 9: {control ad 'sidebar-partner'} 10: {/block} 11: 12: {block sidebarMain-aboveContent}{/block} 13: 14: <div class="js-sticker-wrapper__items"> 15: {block sidebarMain-adverts--sticky-1} 16: <div class="page-block--ad_square1 page-block design-box"> 17: {control ad 'sidebar-sticky-1'} 18:
| $name | 'sidebarMain-content'
 | 
|---|---|
| $params | 
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 sidebarMain-adverts--sticky-1'
 | 
47: extract($ʟ_args); 48: unset($ʟ_args); 49: echo '<div id="sidebar" class="js-sticker-wrapper sidebar layout-columns__item--sidebar layout-columns__item design-sidebar design-tile--version-2 design-tile"> 50: '; 51: $this->renderBlock('sidebarMain-adSidebarPartner', get_defined_vars()) /* line 5 */; 52: echo "\n"; 53: $this->renderBlock('sidebarMain-aboveContent', get_defined_vars()) /* line 8 */; 54: echo ' 55: <div class="js-sticker-wrapper__items"> 56: '; 57: $this->renderBlock('sidebarMain-adverts--sticky-1', get_defined_vars()) /* line 10 */; 58: echo "\n"; 59: $this->renderBlock('sidebarMain-adverts--sticky-2', get_defined_vars()) /* line 28 */; 60: echo "\n"; 61: $this->renderBlock('sidebarMain-adverts--sticky-3', get_defined_vars()) /* line 36 */;
1: {block sidebar__default--columnMainAdditionalContent}{/block} 2: </div> {* for "layout-columns" and related to $isLayoutPageColumnsClosed in "@footer--RootLike.latte" *} 3: 4: 5: {block content}{* [future] possibly remove this block completely since the layout (DOM structure) of all pages should be the same. difference(s) should be present in CSS if needed *} 6: <div id="sidebar" class="js-sticker-wrapper sidebar layout-columns__item--sidebar layout-columns__item design-sidebar design-tile--version-2 design-tile"> 7: 8: {block sidebarMain-adSidebarPartner} 9: {control ad 'sidebar-partner'} 10: {/block} 11: 12: {block sidebarMain-aboveContent}{/block} 13: 14: <div class="js-sticker-wrapper__items"> 15: {block sidebarMain-adverts--sticky-1}
| $name | 'sidebarMain-adverts--sticky-1'
 | 
|---|---|
| $params | 
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 content'
 | 
13: public function main(): array 14: { 15: extract($this->params); 16: if ($this->getParentName()) { 17: return get_defined_vars(); 18: } 19: $this->renderBlock('sidebar__default--columnMainAdditionalContent', get_defined_vars()) /* line 1 */; 20: echo ' 21: </div> 22: '; 23: $this->renderBlock('content', get_defined_vars()) /* line 3 */; 24: return get_defined_vars(); 25: } 26: 27:
1: {block sidebar__default--columnMainAdditionalContent}{/block} 2: </div> {* for "layout-columns" and related to $isLayoutPageColumnsClosed in "@footer--RootLike.latte" *} 3: 4: 5: {block content}{* [future] possibly remove this block completely since the layout (DOM structure) of all pages should be the same. difference(s) should be present in CSS if needed *} 6: <div id="sidebar" class="js-sticker-wrapper sidebar layout-columns__item--sidebar layout-columns__item design-sidebar design-tile--version-2 design-tile"> 7: 8: {block sidebarMain-adSidebarPartner} 9: {control ad 'sidebar-partner'} 10: {/block} 11: 12: {block sidebarMain-aboveContent}{/block} 13: 14: <div class="js-sticker-wrapper__items"> 15: {block sidebarMain-adverts--sticky-1}
| $name | 'content'
 | 
|---|---|
| $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
 | 
|---|
53: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/ArchiveModule/actualities.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 54: } elseif ($isSidebarTypeArchiveLabelDetail) /* line 45 */ { 55: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/ArchiveModule/detail.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 56: } elseif ($isSidebarTypeArticle) /* line 47 */ { 57: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/TextModule/article.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 58: } elseif ($isSidebarTypeGeneralText) /* line 49 */ { 59: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/TextModule/generalText.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 60: } elseif ($isSidebarTypeBlogs) /* line 51 */ { 61: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/BlogsModule/shared.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 62: } elseif ($isSidebarTypeBlogsDetail) /* line 53 */ { 63: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/BlogsModule/detail.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 64: } elseif ($isSidebarTypeBlogsIndex) /* line 55 */ { 65: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/BlogsModule/index.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render(); 66: } elseif ($isSidebarTypeDatabaseCatalog) /* line 57 */ { 67: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('sidebar/DatabaseNew/catalog.latte', $this->getName(), false), ['isErrorPage' => $isErrorPage] + $this->getParameters(), "includeX")->render();
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
 | 
|---|
110: '; 111: IInfo\LatteMacros::renderControl("similarArticles", "render", [], $this->global->uiControl); 112: echo '</div> 113: '; 114: if (isset($opinionsListing) && $opinionsListing) /* line 80 */ { 115: $_HT_macro_arg = $opinionsListing /* line 81 */; 116: IInfo\LatteMacros::renderLazyControl($this->global->uiPresenter, $_HT_macro_arg, []); 117: } 118: echo '</div> 119: '; 120: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('../../../footer.latte', $this->getName(), false), ['isSidebarTypeBlogsDetail' => true] + $this->getParameters(), "includeX")->render(); 121: return get_defined_vars(); 122: } 123: 124:
1: {includeX '../../../header.latte'} 2: 3: 4: {includeShared '/common/additionalCssResolver.inc.latte', 5: isPageWithFancyBox => true, 6: } 7: {includeShared '/common/additionalJsResolver.inc.latte', 8: isPageWithEasing => true, 9: isPageWithMouseWheel => true, 10: isPageWithFancyBox => true, 11: } 12: 13: 14: <div class="design-tile--version-1 design-tile"> 15:
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
 | 
|---|
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/lupa/app/templates/BlogsModule/ArticleModule/Article/default.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 | '/ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google/'
 | 
| SCRIPT_URI | 'http://blog-lupa-martin.imho.cz/ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google/'
 | 
| TZ | 'Europe/Prague'
 | 
| HTTP_HOST | 'blog-lupa-martin.imho.cz'
 | 
| HTTP_ACCESS_CONTROL_ALLOW_ORIGIN | '*'
 | 
| HTTP_REFERRER_POLICY | 'no-referrer-when-downgrade'
 | 
| HTTP_X_REAL_IP | '216.73.216.123'
 | 
| 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_REFERER | 'https://blog-lupa-martin.imho.cz/ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google'
 | 
| HTTP_COOKIE | '_nss=1; tracy-session=35ed325dab'
 | 
| 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 | 'blog-lupa-martin.imho.cz'
 | 
| SERVER_ADDR | '127.0.0.1'
 | 
| SERVER_PORT | '80'
 | 
| REMOTE_ADDR | '216.73.216.123'
 | 
| 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 | '41872'
 | 
| GATEWAY_INTERFACE | 'CGI/1.1'
 | 
| SERVER_PROTOCOL | 'HTTP/1.0'
 | 
| REQUEST_METHOD | 'GET'
 | 
| QUERY_STRING | ''
 | 
| REQUEST_URI | '/ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google/'
 | 
| SCRIPT_NAME | '/ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google/'
 | 
| PHP_SELF | '/ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google/'
 | 
| REQUEST_TIME_FLOAT | 1762218784.812543
 | 
| REQUEST_TIME | 1762218784
 | 
| __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 | /ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google/ | 
| SCRIPT_URI | http://blog-lupa-martin.imho.cz/ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google/ | 
| TZ | Europe/Prague | 
| HTTP_HOST | blog-lupa-martin.imho.cz | 
| HTTP_ACCESS_CONTROL_ALLOW_ORIGIN | * | 
| HTTP_REFERRER_POLICY | no-referrer-when-downgrade | 
| HTTP_X_REAL_IP | 216.73.216.123 | 
| 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_REFERER | https://blog-lupa-martin.imho.cz/ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google | 
| HTTP_COOKIE | _nss=1; tracy-session=35ed325dab | 
| 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 blog-lupa-martin.imho.cz Port 80</address> | 
| SERVER_SOFTWARE | Apache/2.4.38 (Debian) | 
| SERVER_NAME | blog-lupa-martin.imho.cz | 
| SERVER_ADDR | 127.0.0.1 | 
| SERVER_PORT | 80 | 
| REMOTE_ADDR | 216.73.216.123 | 
| 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 | 41872 | 
| GATEWAY_INTERFACE | CGI/1.1 | 
| SERVER_PROTOCOL | HTTP/1.0 | 
| REQUEST_METHOD | GET | 
| QUERY_STRING | no value | 
| REQUEST_URI | /ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google/ | 
| SCRIPT_NAME | /ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google/ | 
| HTTP Request Headers | |
|---|---|
| HTTP Request | GET /ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google/ HTTP/1.0 | 
| Host | blog-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.123 | 
| 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 | 
| referer | https://blog-lupa-martin.imho.cz/ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google | 
| cookie | _nss=1; tracy-session=35ed325dab | 
| X-HTTPS | 1 | 
| HTTP Response Headers | |
| 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 | 5610539 | 
| Cache misses | 3071 | 
| Used memory | 86647664 | 
| Free memory | 47570064 | 
| Wasted memory | 0 | 
| Interned Strings Used memory | 6290968 | 
| Interned Strings Free memory | 24 | 
| Cached scripts | 2461 | 
| Cached keys | 3312 | 
| 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 (3)0 => array (7)| 'name' => 'default output handler' | 'type' => 0 | 'flags' => 20592 | 'level' => 0 | 'chunk_size' => 4096 | 'buffer_size' => 159744 | 'buffer_used' => 38431 => array (7)| 'name' => 'Closure::__invoke' | 'type' => 1 | 'flags' => 113 | 'level' => 1 | 'chunk_size' => 0 | 'buffer_size' => 16384 | 'buffer_used' => 412 => array (7)| 'name' => 'default output handler' | 'type' => 0 | 'flags' => 112 | 'level' => 2 | 'chunk_size' => 0 | 'buffer_size' => 16384 | 'buffer_used' => 0
| Host | 'blog-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.123'
 | 
| 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'
 | 
| referer | 'https://blog-lupa-martin.imho.cz/ecommerce/jak-vycnivat-nad-ostatnimi-v-organickem-vyhledavani-google'
 | 
| cookie | '_nss=1; tracy-session=35ed325dab'
 | 
| X-HTTPS | '1'
 | 
empty
empty
| _nss | '1'
 | 
|---|---|
| tracy-session | '35ed325dab'
 | 
| 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 .../templates-common-@HtmlDocument--RootLike.inc.latte--3f2affa234.php:95 source
85: $this->createTemplate(IInfo\LatteMacros::getTemplateDestination('../common/socialNetworks/socialNetworks.inc.latte', $this->getName(), true), ['isSocialNetworksFacebook' => $configTemplates['common']['socialNetworks']['facebook']['enabled'], 86: 'isSocialNetworksTwitter' => $configTemplates['common']['socialNetworks']['twitter']['enabled']] + $this->getParameters(), "includeX")->render(); 87: IInfo\LatteMacros::renderControlX($this->global->uiControl, "Shared_Ipn_PaginationLinks", "render", []); 88: IInfo\LatteMacros::renderControlX($this->global->uiControl, "Shared_Favicons", "render", []); 89: $this->renderBlock('common__HtmlDocument--rss', get_defined_vars()) /* line 53 */; 90: echo "\n"; 91: if ($rssFeeds) /* line 54 */ { 92: $iterations = 0; 93: foreach ($rssFeeds as $rssFeed) /* line 55 */ { 94: echo '<link rel="alternate" title="'; 95: echo LR\Filters::escapeHtmlAttr($rssFeed['title']) /* line 56 */; 96: echo '" href="'; 97: echo LR\Filters::escapeHtmlAttr(LR\Filters::safeUrl($rssFeed['url'])) /* line 56 */; 98: echo '" type="application/rss+xml"> 99: ';