Twig\Error\RuntimeError {#17166 -lineno: 495 -rawMessage: "An exception has been thrown during the rendering of a template ("Warning: is_file(): open_basedir restriction in effect. File(/www/wwwroot/dev/consentzv4/var/cache/dev/App_KernelDevDebugContainerCompiler.log) is not within the allowed path(s): (/www/wwwroot/dev/masterv4/:/tmp/)")." -source: Twig\Source {#17154 -code: """ {% extends '@WebProfiler/Profiler/layout.html.twig' %}\n \n {% block stylesheets %}\n {{ parent() }}\n \n <style>\n :root {\n --log-filter-active-num-color: #2563EB;\n --log-timestamp-color: #555;\n }\n .theme-dark {\n --log-filter-active-num-color: #2563EB;\n --log-timestamp-color: #ccc;\n }\n \n .log-filters {\n display: flex;\n flex-wrap: wrap;\n }\n .log-filters .log-filter {\n flex-shrink: 0;\n margin-right: 15px;\n position: relative;\n }\n .log-filters .log-filter summary {\n align-items: center;\n background: var(--button-background);\n border-radius: 6px;\n border: 1px solid var(--button-border-color);\n box-shadow: var(--button-box-shadow);\n color: var(--button-color);\n cursor: pointer;\n display: flex;\n font-size: 13px;\n font-weight: 500;\n padding: 4px 8px;\n white-space: nowrap;\n }\n .log-filters .log-filter summary:active {\n box-shadow: none;\n transform: translateY(1px);\n }\n .log-filters .log-filter summary .icon {\n height: 18px;\n width: 18px;\n margin: 0 7px 0 0;\n }\n .log-filters .log-filter summary svg {\n height: 18px;\n width: 18px;\n opacity: 0.7;\n }\n .log-filters .log-filter summary svg {\n stroke-width: 2;\n }\n .log-filters .log-filter summary .filter-active-num {\n color: var(--log-filter-active-num-color);\n font-weight: bold;\n padding: 0 1px;\n }\n .log-filter .tab-navigation {\n position: relative;\n }\n .log-filter .tab-navigation input[type="radio"] {\n position: absolute;\n pointer-events: none;\n opacity: 0;\n }\n .tab-navigation input[type="radio"]:checked + .tab-control {\n background-color: var(--tab-active-background);\n border-radius: 6px;\n box-shadow: inset 0 0 0 1.5px var(--tab-active-border-color);\n color: var(--tab-active-color);\n position: relative;\n z-index: 1;\n }\n .theme-dark .tab-navigation input[type="radio"]:checked + .tab-control {\n box-shadow: inset 0 0 0 1px var(--tab-border-color);\n }\n .tab-navigation input[type="radio"]:focus-visible + .tab-control {\n outline: 1px solid var(--color-link);\n }\n .tab-navigation input[type="radio"]:checked + .tab-control + input[type="radio"] + .tab-control:before{\n width: 0;\n }\n \n .log-filters .log-filter .log-filter-content {\n background: var(--base-0);\n border: 1px solid var(--table-border-color);\n border-radius: 6px;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n padding: 15px;\n position: absolute;\n left: 0;\n top: 32px;\n max-width: 400px;\n min-width: 200px;\n z-index: 9999;\n }\n .log-filters .log-filter .log-filter-content .log-filter-option {\n align-items: center;\n display: flex;\n }\n .log-filter .filter-select-all-or-none {\n margin-bottom: 10px;\n }\n .log-filter .filter-select-all-or-none button + button {\n margin-left: 15px;\n }\n .log-filters .log-filter .log-filter-content .log-filter-option + .log-filter-option {\n margin: 7px 0 0;\n }\n .log-filters .log-filter .log-filter-content .log-filter-option label {\n cursor: pointer;\n flex: 1;\n padding-left: 10px;\n }\n \n table.logs {\n border-bottom-width: 0;\n border-collapse: collapse;\n }\n table.logs tr + tr td {\n border-width: 1px 0 0;\n }\n table.logs .metadata {\n display: block;\n font-size: 12px;\n }\n .theme-dark tr.status-error td,\n .theme-dark tr.status-warning td { border-bottom: unset; border-top: unset; }\n \n table.logs .log-timestamp {\n color: var(--log-timestamp-color);\n }\n table.logs .log-metadata {\n margin: 8px 0 0;\n }\n table.logs .log-metadata > span {\n display: inline-block;\n }\n table.logs .log-metadata > span + span {\n margin-left: 10px;\n }\n table.logs .log-metadata .log-channel {\n color: var(--base-1);\n font-size: 13px;\n font-weight: bold;\n }\n table.logs .log-metadata .badge {\n background: var(--badge-light-background);\n color: var(--badge-light-color);\n }\n table.logs .log-metadata .log-num-occurrences {\n color: var(--color-muted);\n font-size: 13px;\n }\n table.logs .log-metadata .context {\n background: var(--code-block-background);\n border-radius: 4px;\n padding: 5px;\n }\n table.logs .log-metadata .context + .context {\n margin-top: 10px;\n }\n .log-type-badge {\n background: var(--badge-light-background);\n box-shadow: none;\n color: var(--badge-light-color);\n display: inline-block;\n font-family: var(--font-family-system);\n margin-top: 5px;\n }\n .log-type-badge.badge-deprecation,\n .log-type-badge.badge-warning {\n background: var(--badge-warning-background);\n color: var(--badge-warning-color);\n }\n .log-type-badge.badge-error {\n background: var(--badge-danger-background);\n color: var(--badge-danger-color);\n }\n .log-type-badge.badge-silenced {\n background: #EDE9FE;\n color: #6D28D9;\n }\n .theme-dark .log-type-badge.badge-silenced {\n background: #5B21B6;\n color: #EDE9FE;\n }\n \n tr.log-status-warning > td:first-child,\n tr.log-status-error > td:first-child,\n tr.log-status-silenced > td:first-child {\n position: relative;\n }\n tr.log-status-warning > td:first-child:before,\n tr.log-status-error > td:first-child:before,\n tr.log-status-silenced > td:first-child:before {\n background: transparent;\n border-radius: 0;\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n }\n tr.log-status-warning > td:first-child:before {\n background: var(--yellow-400);\n }\n tr.log-status-error > td:first-child:before {\n background: var(--red-400);\n }\n tr.log-status-silenced > td:first-child:before {\n background: #a78bfa;\n }\n \n .container-compilation-logs {\n background: var(--table-background);\n border: 1px solid var(--base-2);\n border-radius: 6px;\n margin-top: 30px;\n padding: 15px;\n }\n .container-compilation-logs summary {\n cursor: pointer;\n }\n .container-compilation-logs summary h4 {\n margin: 0 0 5px;\n }\n .container-compilation-logs summary p {\n margin: 0;\n }\n </style>\n {% endblock %}\n \n {% block javascripts %}\n <script>\n window.addEventListener('DOMContentLoaded', () => {\n new SymfonyProfilerLoggerPanel();\n });\n \n class SymfonyProfilerLoggerPanel {\n constructor() {\n this.#initializeLogsTable();\n }\n \n #initializeLogsTable() {\n this.#updateLogsTable();\n \n document.querySelectorAll('.log-filter input').forEach((input) => {\n input.addEventListener('change', () => { this.#updateLogsTable(); });\n });\n \n document.querySelectorAll('.filter-select-all-or-none button').forEach((link) => {\n link.addEventListener('click', () => {\n const selectAll = link.classList.contains('select-all');\n link.closest('.log-filter-content').querySelectorAll('input').forEach((input) => {\n input.checked = selectAll;\n });\n \n this.#updateLogsTable();\n });\n });\n \n document.body.addEventListener('click', (event) => {\n document.querySelectorAll('details.log-filter').forEach((filterElement) => {\n if (!filterElement.contains(event.target) && filterElement.open) {\n filterElement.open = false;\n }\n });\n });\n }\n \n #updateLogsTable() {\n const logs = document.querySelector('table.logs');\n if (null === logs) {\n return;\n }\n \n const selectedType = document.querySelector('#log-filter-type input:checked').value;\n const priorities = document.querySelectorAll('#log-filter-priority input');\n const allPriorities = Array.from(priorities).map((input) => input.value);\n const selectedPriorities = Array.from(priorities).filter((input) => input.checked).map((input) => input.value);\n const channels = document.querySelectorAll('#log-filter-channel input');\n const selectedChannels = Array.from(channels).filter((input) => input.checked).map((input) => input.value);\n \n /* hide rows that don't match the current filters */\n let numVisibleRows = 0;\n logs.querySelectorAll('tbody tr').forEach((row) => {\n if ('all' !== selectedType && selectedType !== row.getAttribute('data-type')) {\n row.style.display = 'none';\n return;\n }\n \n const priority = row.getAttribute('data-priority');\n if (false === selectedPriorities.includes(priority) && true === allPriorities.includes(priority)) {\n row.style.display = 'none';\n return;\n }\n \n if ('' !== row.getAttribute('data-channel') && false === selectedChannels.includes(row.getAttribute('data-channel'))) {\n row.style.display = 'none';\n return;\n }\n \n row.style.display = 'table-row';\n numVisibleRows++;\n });\n \n document.querySelector('table.logs').style.display = 0 === numVisibleRows ? 'none' : 'table';\n document.querySelector('.no-logs-message').style.display = 0 === numVisibleRows ? 'block' : 'none';\n \n /* update the selected totals of all filters */\n document.querySelector('#log-filter-priority .filter-active-num').innerText = (priorities.length === selectedPriorities.length) ? 'All' : selectedPriorities.length;\n document.querySelector('#log-filter-channel .filter-active-num').innerText = (channels.length === selectedChannels.length) ? 'All' : selectedChannels.length;\n }\n }\n </script>\n {% endblock %}\n \n {% block toolbar %}\n {% if collector.counterrors or collector.countdeprecations or collector.countwarnings %}\n {% set icon %}\n {% set status_color = collector.counterrors ? 'red' : collector.countwarnings ? 'yellow' : 'none' %}\n {{ source('@WebProfiler/Icon/logger.svg') }}\n <span class="sf-toolbar-value">{{ collector.counterrors ?: (collector.countdeprecations + collector.countwarnings) }}</span>\n {% endset %}\n \n {% set text %}\n <div class="sf-toolbar-info-piece">\n <b>Errors</b>\n <span class="sf-toolbar-status sf-toolbar-status-{{ collector.counterrors ? 'red' }}">{{ collector.counterrors|default(0) }}</span>\n </div>\n \n <div class="sf-toolbar-info-piece">\n <b>Warnings</b>\n <span class="sf-toolbar-status sf-toolbar-status-{{ collector.countwarnings ? 'yellow' }}">{{ collector.countwarnings|default(0) }}</span>\n </div>\n \n <div class="sf-toolbar-info-piece">\n <b>Deprecations</b>\n <span class="sf-toolbar-status sf-toolbar-status-{{ collector.countdeprecations ? 'none' }}">{{ collector.countdeprecations|default(0) }}</span>\n </div>\n {% endset %}\n \n {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', {link: profiler_url, status: status_color}) }}\n {% endif %}\n {% endblock %}\n \n {% block menu %}\n <span class="label label-status-{{ collector.counterrors ? 'error' : collector.countwarnings ? 'warning' : 'none' }} {{ collector.logs is empty ? 'disabled' }}">\n <span class="icon">{{ source('@WebProfiler/Icon/logger.svg') }}</span>\n <strong>Logs</strong>\n {% if collector.counterrors or collector.countdeprecations or collector.countwarnings %}\n <span class="count">\n <span>{{ collector.counterrors ?: (collector.countdeprecations + collector.countwarnings) }}</span>\n </span>\n {% endif %}\n </span>\n {% endblock %}\n \n {% block panel %}\n <h2>Log Messages</h2>\n \n {% if collector.processedLogs is empty %}\n <div class="empty empty-panel">\n <p>No log messages available.</p>\n </div>\n {% else %}\n {% set has_error_logs = collector.processedLogs|column('type')|filter(type => 'error' == type)|length > 0 %}\n {% set has_deprecation_logs = collector.processedLogs|column('type')|filter(type => 'deprecation' == type)|length > 0 %}\n \n {% set filters = collector.filters %}\n <div class="log-filters">\n <div id="log-filter-type" class="log-filter">\n <div class="tab-navigation">\n {% set initially_active_tab = has_error_logs ? 'error' : has_deprecation_logs ? 'deprecation' : 'all' %}\n <input type="radio" id="filter-log-type-all" name="filter-log-type" value="all" {{ 'all' == initially_active_tab ? 'checked' }}>\n <label for="filter-log-type-all" class="tab-control">\n All messages\n </label>\n \n <input type="radio" id="filter-log-type-error" name="filter-log-type" value="error" {{ 'error' == initially_active_tab ? 'checked' }}>\n <label for="filter-log-type-error" class="tab-control">\n Errors\n <span class="badge status-{{ collector.counterrors ? 'error' }}">{{ collector.counterrors|default(0) }}</span>\n </label>\n \n <input type="radio" id="filter-log-type-deprecation" name="filter-log-type" value="deprecation" {{ 'deprecation' == initially_active_tab ? 'checked' }}>\n <label for="filter-log-type-deprecation" class="tab-control">\n Deprecations\n <span class="badge status-{{ collector.countdeprecations ? 'warning' }}">{{ collector.countdeprecations|default(0) }}</span>\n </label>\n </div>\n </div>\n \n <details id="log-filter-priority" class="log-filter">\n <summary>\n <span class="icon">{{ source('@WebProfiler/Icon/filter.svg') }}</span>\n Level (<span class="filter-active-num">{{ filters.priority|length - 1 }}</span>)\n </summary>\n \n <div class="log-filter-content">\n <div class="filter-select-all-or-none">\n <button type="button" class="btn btn-link select-all">Select All</button>\n <button type="button" class="btn btn-link select-none">Select None</button>\n </div>\n \n {% for label, value in filters.priority %}\n <div class="log-filter-option">\n <input {{ 'debug' != value ? 'checked' }} type="checkbox" id="filter-log-level-{{ value }}" name="filter-log-level-{{ value }}" value="{{ value }}">\n <label for="filter-log-level-{{ value }}">{{ label }}</label>\n </div>\n {% endfor %}\n </div>\n </details>\n \n <details id="log-filter-channel" class="log-filter">\n <summary>\n <span class="icon">{{ source('@WebProfiler/Icon/filter.svg') }}</span>\n Channel (<span class="filter-active-num">{{ filters.channel|length - 1 }}</span>)\n </summary>\n \n <div class="log-filter-content">\n <div class="filter-select-all-or-none">\n <button type="button" class="btn btn-link select-all">Select All</button>\n <button type="button" class="btn btn-link select-none">Select None</button>\n </div>\n \n {% for value in filters.channel %}\n <div class="log-filter-option">\n <input {{ 'event' != value ? 'checked' }} type="checkbox" id="filter-log-channel-{{ value }}" name="filter-log-channel-{{ value }}" value="{{ value }}">\n <label for="filter-log-channel-{{ value }}">{{ value|title }}</label>\n </div>\n {% endfor %}\n </div>\n </details>\n </div>\n \n <table class="logs">\n <colgroup>\n <col style="width: 140px">\n <col>\n </colgroup>\n \n <thead>\n <tr>\n <th>Time</th>\n <th>Message</th>\n </tr>\n </thead>\n \n <tbody>\n {% for log in collector.processedLogs %}\n {% set css_class = 'error' == log.type ? 'error'\n : (log.priorityName == 'WARNING' or 'deprecation' == log.type) ? 'warning'\n : 'silenced' == log.type ? 'silenced'\n %}\n <tr class="log-status-{{ css_class }}" data-type="{{ log.type }}" data-priority="{{ log.priority }}" data-channel="{{ log.channel }}" style="{{ 'event' == log.channel or 'DEBUG' == log.priorityName ? 'display: none' }}">\n <td class="log-timestamp">\n <time class="newline" title="{{ log.timestamp|date('r') }}" datetime="{{ log.timestamp|date(constant('DateTimeInterface::RFC3339_EXTENDED')) }}" data-convert-to-user-timezone data-render-as-time data-render-with-millisecond-precision>\n {{ log.timestamp|date('H:i:s.v') }}\n </time>\n \n {% if log.type in ['error', 'deprecation', 'silenced'] or 'WARNING' == log.priorityName %}\n <span class="log-type-badge badge badge-{{ css_class }}">\n {% if 'error' == log.type or 'WARNING' == log.priorityName %}\n {{ log.priorityName|lower }}\n {% else %}\n {{ log.type|lower }}\n {% endif %}\n </span>\n {% else %}\n <span class="log-type-badge badge badge-{{ css_class }}">\n {{ log.priorityName|lower }}\n </span>\n {% endif %}\n </td>\n \n <td class="font-normal">\n {{ _self.render_log_message('debug', loop.index, log) }}\n </td>\n </tr>\n {% endfor %}\n </tbody>\n </table>\n \n <div class="no-logs-message empty">\n <p>There are no log messages.</p>\n </div>\n {% endif %}\n \n {% set compilerLogTotal = collector.compilerLogs|reduce((total, logs) => total + logs|length, 0) %}\n <details class="container-compilation-logs">\n <summary>\n <h4>Container Compilation Logs <span class="text-muted">({{ compilerLogTotal }})</span></h4>\n <span class="text-muted">Log messages generated during the compilation of the service container.</span>\n </summary>\n \n {% if collector.compilerLogs is empty %}\n <div class="empty">\n <p>There are no compiler log messages.</p>\n </div>\n {% else %}\n <table class="container-logs">\n <thead>\n <tr>\n <th>Messages</th>\n <th class="full-width">Class</th>\n </tr>\n </thead>\n \n <tbody>\n {% for class, logs in collector.compilerLogs %}\n <tr>\n <td class="font-normal text-right">{{ logs|length }}</td>\n <td class="font-normal">\n {% set context_id = 'context-compiler-' ~ loop.index %}\n \n <button type="button" class="btn btn-link sf-toggle" data-toggle-selector="#{{ context_id }}" data-toggle-alt-content="{{ class }}">{{ class }}</button>\n \n <div id="{{ context_id }}" class="context sf-toggle-content sf-toggle-hidden">\n <ul class="break-long-words">\n {% for log in logs %}\n <li>{{ profiler_dump_log(log.message) }}</li>\n {% endfor %}\n </ul>\n </div>\n </td>\n </tr>\n {% endfor %}\n </tbody>\n </table>\n {% endif %}\n </details>\n {% endblock %}\n \n {% macro render_log_message(category, log_index, log) %}\n {% set has_context = log.context is defined and log.context is not empty %}\n {% set has_trace = log.context.exception.trace is defined %}\n \n {% if not has_context %}\n {{ profiler_dump_log(log.message) }}\n {% else %}\n {{ profiler_dump_log(log.message, log.context) }}\n {% endif %}\n \n <div class="log-metadata">\n {% if log.channel %}\n <span class="badge">{{ log.channel }}</span>\n {% endif %}\n \n {% if log.errorCount is defined and log.errorCount > 1 %}\n <span class="log-num-occurrences">{{ log.errorCount }} times</span>\n {% endif %}\n \n {% if has_context %}\n {% set context_id = 'context-' ~ category ~ '-' ~ log_index %}\n <span><button type="button" class="btn btn-link text-small sf-toggle" data-toggle-selector="#{{ context_id }}" data-toggle-alt-content="Hide context">Show context</button></span>\n {% endif %}\n \n {% if has_trace %}\n {% set trace_id = 'trace-' ~ category ~ '-' ~ log_index %}\n <span><button type="button" class="btn btn-link text-small sf-toggle" data-toggle-selector="#{{ trace_id }}" data-toggle-alt-content="Hide trace">Show trace</button></span>\n {% endif %}\n \n {% if has_context %}\n <div id="{{ context_id }}" class="context sf-toggle-content sf-toggle-hidden">\n {{ profiler_dump(log.context, maxDepth: 1) }}\n </div>\n {% endif %}\n \n {% if has_trace %}\n <div id="{{ trace_id }}" class="context sf-toggle-content sf-toggle-hidden">\n {{ profiler_dump(log.context.exception.trace, maxDepth: 1) }}\n </div>\n {% endif %}\n </div>\n {% endmacro %}\n """ -name: "@WebProfiler/Collector/logger.html.twig" -path: "/www/wwwroot/dev/consentzv4/vendor/symfony/web-profiler-bundle/Resources/views/Collector/logger.html.twig" } -phpFile: "/www/wwwroot/dev/masterv4/vendor/twig/twig/src/Template.php" -phpLine: 460 }
ErrorException {#15865 #severity: E_WARNING }
if (0 < $line) { $text .= ' at line '.$line; } if (!file_exists($file)) { return $text; } $link = $this->fileLinkFormat->format($file, $line);<?php if ($trace['file']) { ?> <?php $lineNumber = $trace['line'] ?: 1; $fileLink = $this->fileLinkFormat->format($trace['file'], $lineNumber); $filePath = strtr(strip_tags($this->formatFile($trace['file'], $lineNumber)), [' at line '.$lineNumber => '']); $filePathParts = explode(\DIRECTORY_SEPARATOR, $filePath); ?> <span class="block trace-file-path">in<a href="<?= $fileLink; ?>"> private function include(string $name, array $context = []): string { extract($context, \EXTR_SKIP); ob_start(); include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; return trim(ob_get_clean()); } /** $displayCodeSnippet = $isFirstUserCode && !$isVendorTrace; if ($displayCodeSnippet) { $isFirstUserCode = false; } ?> <div class="trace-line <?= $isVendorTrace ? 'trace-from-vendor' : ''; ?>"><?= $this->include('views/trace.html.php', [ 'prefix' => $index, 'i' => $i, 'trace' => $trace, 'style' => $isVendorTrace ? 'compact' : ($displayCodeSnippet ? 'expanded' : ''), ]); ?> private function include(string $name, array $context = []): string { extract($context, \EXTR_SKIP); ob_start(); include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; return trim(ob_get_clean()); } /** </h3><div class="tab-content"><?php foreach ($exceptionAsArray as $i => $e) { echo $this->include('views/traces.html.php', [ 'exception' => $e, 'index' => $i + 1, 'expand' => in_array($i, $exceptionWithUserCode, true) || ([] === $exceptionWithUserCode && 0 === $i), ]); } private function include(string $name, array $context = []): string { extract($context, \EXTR_SKIP); ob_start(); include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; return trim(ob_get_clean()); } /**</div></div></header><?php } ?><?= $this->include('views/exception.html.php', $context); ?><script><?= $this->include('assets/js/exception.js'); ?> </script></body> private function include(string $name, array $context = []): string { extract($context, \EXTR_SKIP); ob_start(); include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; return trim(ob_get_clean()); } /** ]); } $exceptionMessage = $this->escape($exception->getMessage()); return $this->include($debugTemplate, [ 'exception' => $exception, 'exceptionMessage' => $exceptionMessage, 'statusText' => $statusText, 'statusCode' => $statusCode, 'logger' => null !== $this->logger && class_exists(DebugLoggerConfigurator::class) ? DebugLoggerConfigurator::getDebugLogger($this->logger) : null, $headers['X-Debug-Exception-File'] = rawurlencode($exception->getFile()).':'.$exception->getLine(); } $exception = FlattenException::createWithDataRepresentation($exception, null, $headers); return $exception->setAsString($this->renderException($exception)); } /** * Gets the HTML content associated with the given exception. */ { $flattenException = FlattenException::createFromThrowable($exception); $debug = \is_bool($this->debug) ? $this->debug : ($this->debug)($flattenException); if ($debug || !$template = $this->findTemplate($flattenException->getStatusCode())) { return $this->fallbackErrorRenderer->render($exception); } return $flattenException->setAsString($this->twig->render($template, [ 'exception' => $flattenException, 'status_code' => $flattenException->getStatusCode(), include_once \dirname(__DIR__, 4).'/vendor/symfony/framework-bundle/ErrorHandler/ErrorRenderer/RuntimeModeErrorRendererSelector.php'; include_once \dirname(__DIR__, 4).'/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php'; $a = ($container->services['request_stack'] ??= new \Symfony\Component\HttpFoundation\RequestStack()); return $container->services['error_controller'] = new \Symfony\Component\HttpKernel\Controller\ErrorController(($container->services['http_kernel'] ?? self::getHttpKernelService($container)), 'error_controller', new \Symfony\Component\ErrorHandler\ErrorRenderer\SerializerErrorRenderer(($container->privates['debug.serializer'] ?? self::getDebug_SerializerService($container)), \Symfony\Component\ErrorHandler\ErrorRenderer\SerializerErrorRenderer::getPreferredFormat($a), new class(fn () => \Symfony\Bundle\FrameworkBundle\ErrorHandler\ErrorRenderer\RuntimeModeErrorRendererSelector::select($container->getEnv('bool:default::key:web:default:kernel.runtime_mode:'), #[\Closure(name: 'twig.error_renderer.html', class: 'Symfony\\Bridge\\Twig\\ErrorRenderer\\TwigErrorRenderer')] fn () => ($container->privates['twig.error_renderer.html'] ?? $container->load('getTwig_ErrorRenderer_HtmlService')), #[\Closure(name: 'error_handler.error_renderer.cli', class: 'Symfony\\Component\\ErrorHandler\\ErrorRenderer\\CliErrorRenderer')] fn () => ($container->privates['error_handler.error_renderer.cli'] ??= new \Symfony\Component\ErrorHandler\ErrorRenderer\CliErrorRenderer()))) extends \Symfony\Component\DependencyInjection\Argument\LazyClosure implements \Symfony\Component\ErrorHandler\ErrorRenderer\ErrorRendererInterface { public function render(\Throwable $exception): \Symfony\Component\ErrorHandler\Exception\FlattenException { return $this->service->render(...\func_get_args()); } }, \Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer::isDebug($a, true))); }} $flattenException->setAsString($this->serializer->serialize($flattenException, $format, [ 'exception' => $exception, 'debug' => $debug, ])); } catch (NotEncodableValueException) { $flattenException = $this->fallbackErrorRenderer->render($exception); } return $flattenException->setHeaders($flattenException->getHeaders() + $headers); } ) { } public function __invoke(\Throwable $exception): Response { $exception = $this->errorRenderer->render($exception); return new Response($exception->getAsString(), $exception->getStatusCode(), $exception->getHeaders()); } public function preview(Request $request, int $code): Response $this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS); $controller = $event->getController(); $arguments = $event->getArguments(); // call controller $response = $controller(...$arguments); // view if (!$response instanceof Response) { $event = new ViewEvent($this, $request, $type, $response, $event); $this->dispatcher->dispatch($event, KernelEvents::VIEW); $request->headers->set('X-Php-Ob-Level', (string) ob_get_level()); $this->requestStack->push($request); $response = null; try { return $response = $this->handleRaw($request, $type); } catch (\Throwable $e) { if ($e instanceof \Error && !$this->handleAllThrowables) { throw $e; } } $request = $this->duplicateRequest($throwable, $event->getRequest()); try { $response = $event->getKernel()->handle($request, HttpKernelInterface::SUB_REQUEST, false); } catch (\Exception $e) { $f = FlattenException::createFromThrowable($e); $this->logException($e, \sprintf('Exception thrown when handling an exception (%s: %s at %s line %s)', $f->getClass(), $f->getMessage(), basename($e->getFile()), $e->getLine())); $closure = static function (...$args) use (&$listener, &$closure) { if ($listener[0] instanceof \Closure) { $listener[0] = $listener[0](); $listener[1] ??= '__invoke'; } ($closure = $listener(...))(...$args); }; } else { $closure = $listener instanceof WrappedListener ? $listener : $listener(...); } } foreach ($listeners as $listener) { if ($stoppable && $event->isPropagationStopped()) { break; } $listener($event, $eventName, $this); } } /** * Sorts the internal list of listeners for the given event by priority. } else { $listeners = $this->getListeners($eventName); } if ($listeners) { $this->callListeners($listeners, $eventName, $event); } return $event; } } public function dispatch(object $event, ?string $eventName = null): object { if ($this->disabled?->__invoke()) { return $this->dispatcher->dispatch($event, $eventName); } $eventName ??= $event::class; $this->callStack ??= new \SplObjectStorage(); * Handles a throwable by trying to convert it to a Response. */ private function handleThrowable(\Throwable $e, Request $request, int $type): Response { $event = new ExceptionEvent($this, $request, $type, $e, isKernelTerminating: $this->terminating); $this->dispatcher->dispatch($event, KernelEvents::EXCEPTION); // a listener might have replaced the exception $e = $event->getThrowable(); if (!$event->hasResponse()) { $this->finishRequest($request, $type); throw $e; } return $response = $this->handleThrowable($e, $request, $type); } finally { $this->requestStack->pop(); if ($response instanceof StreamedResponse && $callback = $response->getCallback()) { $requestStack = $this->requestStack; if (!$this->handlingHttpCache) { $this->resetServices = true; } try { return $this->getHttpKernel()->handle($request, $type, $catch); } finally { --$this->requestStackSize; } } ) { } public function run(): int { $response = $this->kernel->handle($this->request); if (Kernel::VERSION_ID >= 60400) { $response->send(false); if (\function_exists('fastcgi_finish_request') && !$this->debug) {$app = $app(...$args);exit( $runtime ->getRunner($app) ->run());<?phpuse App\Kernel;require_once dirname(__DIR__).'/vendor/autoload_runtime.php';return static function (array $context) { return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);};ErrorException {#15828 #severity: E_WARNING }
if (0 < $line) { $text .= ' at line '.$line; } if (!file_exists($file)) { return $text; } $link = $this->fileLinkFormat->format($file, $line);<?php if ($trace['file']) { ?> <?php $lineNumber = $trace['line'] ?: 1; $fileLink = $this->fileLinkFormat->format($trace['file'], $lineNumber); $filePath = strtr(strip_tags($this->formatFile($trace['file'], $lineNumber)), [' at line '.$lineNumber => '']); $filePathParts = explode(\DIRECTORY_SEPARATOR, $filePath); ?> <span class="block trace-file-path">in<a href="<?= $fileLink; ?>"> private function include(string $name, array $context = []): string { extract($context, \EXTR_SKIP); ob_start(); include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; return trim(ob_get_clean()); } /** $displayCodeSnippet = $isFirstUserCode && !$isVendorTrace; if ($displayCodeSnippet) { $isFirstUserCode = false; } ?> <div class="trace-line <?= $isVendorTrace ? 'trace-from-vendor' : ''; ?>"><?= $this->include('views/trace.html.php', [ 'prefix' => $index, 'i' => $i, 'trace' => $trace, 'style' => $isVendorTrace ? 'compact' : ($displayCodeSnippet ? 'expanded' : ''), ]); ?> private function include(string $name, array $context = []): string { extract($context, \EXTR_SKIP); ob_start(); include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; return trim(ob_get_clean()); } /** </h3><div class="tab-content"><?php foreach ($exceptionAsArray as $i => $e) { echo $this->include('views/traces.html.php', [ 'exception' => $e, 'index' => $i + 1, 'expand' => in_array($i, $exceptionWithUserCode, true) || ([] === $exceptionWithUserCode && 0 === $i), ]); } private function include(string $name, array $context = []): string { extract($context, \EXTR_SKIP); ob_start(); include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; return trim(ob_get_clean()); } /**</div></div></header><?php } ?><?= $this->include('views/exception.html.php', $context); ?><script><?= $this->include('assets/js/exception.js'); ?> </script></body> private function include(string $name, array $context = []): string { extract($context, \EXTR_SKIP); ob_start(); include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; return trim(ob_get_clean()); } /** ]); } $exceptionMessage = $this->escape($exception->getMessage()); return $this->include($debugTemplate, [ 'exception' => $exception, 'exceptionMessage' => $exceptionMessage, 'statusText' => $statusText, 'statusCode' => $statusCode, 'logger' => null !== $this->logger && class_exists(DebugLoggerConfigurator::class) ? DebugLoggerConfigurator::getDebugLogger($this->logger) : null, $headers['X-Debug-Exception-File'] = rawurlencode($exception->getFile()).':'.$exception->getLine(); } $exception = FlattenException::createWithDataRepresentation($exception, null, $headers); return $exception->setAsString($this->renderException($exception)); } /** * Gets the HTML content associated with the given exception. */ { $flattenException = FlattenException::createFromThrowable($exception); $debug = \is_bool($this->debug) ? $this->debug : ($this->debug)($flattenException); if ($debug || !$template = $this->findTemplate($flattenException->getStatusCode())) { return $this->fallbackErrorRenderer->render($exception); } return $flattenException->setAsString($this->twig->render($template, [ 'exception' => $flattenException, 'status_code' => $flattenException->getStatusCode(), include_once \dirname(__DIR__, 4).'/vendor/symfony/framework-bundle/ErrorHandler/ErrorRenderer/RuntimeModeErrorRendererSelector.php'; include_once \dirname(__DIR__, 4).'/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php'; $a = ($container->services['request_stack'] ??= new \Symfony\Component\HttpFoundation\RequestStack()); return $container->services['error_controller'] = new \Symfony\Component\HttpKernel\Controller\ErrorController(($container->services['http_kernel'] ?? self::getHttpKernelService($container)), 'error_controller', new \Symfony\Component\ErrorHandler\ErrorRenderer\SerializerErrorRenderer(($container->privates['debug.serializer'] ?? self::getDebug_SerializerService($container)), \Symfony\Component\ErrorHandler\ErrorRenderer\SerializerErrorRenderer::getPreferredFormat($a), new class(fn () => \Symfony\Bundle\FrameworkBundle\ErrorHandler\ErrorRenderer\RuntimeModeErrorRendererSelector::select($container->getEnv('bool:default::key:web:default:kernel.runtime_mode:'), #[\Closure(name: 'twig.error_renderer.html', class: 'Symfony\\Bridge\\Twig\\ErrorRenderer\\TwigErrorRenderer')] fn () => ($container->privates['twig.error_renderer.html'] ?? $container->load('getTwig_ErrorRenderer_HtmlService')), #[\Closure(name: 'error_handler.error_renderer.cli', class: 'Symfony\\Component\\ErrorHandler\\ErrorRenderer\\CliErrorRenderer')] fn () => ($container->privates['error_handler.error_renderer.cli'] ??= new \Symfony\Component\ErrorHandler\ErrorRenderer\CliErrorRenderer()))) extends \Symfony\Component\DependencyInjection\Argument\LazyClosure implements \Symfony\Component\ErrorHandler\ErrorRenderer\ErrorRendererInterface { public function render(\Throwable $exception): \Symfony\Component\ErrorHandler\Exception\FlattenException { return $this->service->render(...\func_get_args()); } }, \Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer::isDebug($a, true))); }} $flattenException->setAsString($this->serializer->serialize($flattenException, $format, [ 'exception' => $exception, 'debug' => $debug, ])); } catch (NotEncodableValueException) { $flattenException = $this->fallbackErrorRenderer->render($exception); } return $flattenException->setHeaders($flattenException->getHeaders() + $headers); } ) { } public function __invoke(\Throwable $exception): Response { $exception = $this->errorRenderer->render($exception); return new Response($exception->getAsString(), $exception->getStatusCode(), $exception->getHeaders()); } public function preview(Request $request, int $code): Response $this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS); $controller = $event->getController(); $arguments = $event->getArguments(); // call controller $response = $controller(...$arguments); // view if (!$response instanceof Response) { $event = new ViewEvent($this, $request, $type, $response, $event); $this->dispatcher->dispatch($event, KernelEvents::VIEW); $request->headers->set('X-Php-Ob-Level', (string) ob_get_level()); $this->requestStack->push($request); $response = null; try { return $response = $this->handleRaw($request, $type); } catch (\Throwable $e) { if ($e instanceof \Error && !$this->handleAllThrowables) { throw $e; } } $request = $this->duplicateRequest($throwable, $event->getRequest()); try { $response = $event->getKernel()->handle($request, HttpKernelInterface::SUB_REQUEST, false); } catch (\Exception $e) { $f = FlattenException::createFromThrowable($e); $this->logException($e, \sprintf('Exception thrown when handling an exception (%s: %s at %s line %s)', $f->getClass(), $f->getMessage(), basename($e->getFile()), $e->getLine())); foreach ($listeners as $listener) { if ($stoppable && $event->isPropagationStopped()) { break; } $listener($event, $eventName, $this); } } /** * Sorts the internal list of listeners for the given event by priority. } else { $listeners = $this->getListeners($eventName); } if ($listeners) { $this->callListeners($listeners, $eventName, $event); } return $event; } } public function dispatch(object $event, ?string $eventName = null): object { if ($this->disabled?->__invoke()) { return $this->dispatcher->dispatch($event, $eventName); } $eventName ??= $event::class; $this->callStack ??= new \SplObjectStorage(); * Handles a throwable by trying to convert it to a Response. */ private function handleThrowable(\Throwable $e, Request $request, int $type): Response { $event = new ExceptionEvent($this, $request, $type, $e, isKernelTerminating: $this->terminating); $this->dispatcher->dispatch($event, KernelEvents::EXCEPTION); // a listener might have replaced the exception $e = $event->getThrowable(); if (!$event->hasResponse()) { if ($pop = $request !== $this->requestStack->getMainRequest()) { $this->requestStack->push($request); } try { $response = $this->handleThrowable($exception, $request, self::MAIN_REQUEST); } finally { if ($pop) { $this->requestStack->pop(); } } if ($hasRun) { throw $e; } $hasRun = true; $kernel->terminateWithException($e, $request); }; } } elseif ($event instanceof ConsoleEvent && $app = $event->getCommand()->getApplication()) { $output = $event->getOutput(); if ($output instanceof ConsoleOutputInterface) { $this->exceptionHandler = null; } try { if (null !== $exceptionHandler) { $exceptionHandler($exception); return; } $handlerException ??= $exception; } catch (\Throwable $handlerException) { if (0 < $line) { $text .= ' at line '.$line; } if (!file_exists($file)) { return $text; } $link = $this->fileLinkFormat->format($file, $line);<?php if ($trace['file']) { ?> <?php $lineNumber = $trace['line'] ?: 1; $fileLink = $this->fileLinkFormat->format($trace['file'], $lineNumber); $filePath = strtr(strip_tags($this->formatFile($trace['file'], $lineNumber)), [' at line '.$lineNumber => '']); $filePathParts = explode(\DIRECTORY_SEPARATOR, $filePath); ?> <span class="block trace-file-path">in<a href="<?= $fileLink; ?>"> private function include(string $name, array $context = []): string { extract($context, \EXTR_SKIP); ob_start(); include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; return trim(ob_get_clean()); } /** $displayCodeSnippet = $isFirstUserCode && !$isVendorTrace; if ($displayCodeSnippet) { $isFirstUserCode = false; } ?> <div class="trace-line <?= $isVendorTrace ? 'trace-from-vendor' : ''; ?>"><?= $this->include('views/trace.html.php', [ 'prefix' => $index, 'i' => $i, 'trace' => $trace, 'style' => $isVendorTrace ? 'compact' : ($displayCodeSnippet ? 'expanded' : ''), ]); ?> private function include(string $name, array $context = []): string { extract($context, \EXTR_SKIP); ob_start(); include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; return trim(ob_get_clean()); } /** </h3><div class="tab-content"><?php foreach ($exceptionAsArray as $i => $e) { echo $this->include('views/traces.html.php', [ 'exception' => $e, 'index' => $i + 1, 'expand' => in_array($i, $exceptionWithUserCode, true) || ([] === $exceptionWithUserCode && 0 === $i), ]); } private function include(string $name, array $context = []): string { extract($context, \EXTR_SKIP); ob_start(); include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; return trim(ob_get_clean()); } /**</div></div></header><?php } ?><?= $this->include('views/exception.html.php', $context); ?><script><?= $this->include('assets/js/exception.js'); ?> </script></body> private function include(string $name, array $context = []): string { extract($context, \EXTR_SKIP); ob_start(); include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; return trim(ob_get_clean()); } /** ]); } $exceptionMessage = $this->escape($exception->getMessage()); return $this->include($debugTemplate, [ 'exception' => $exception, 'exceptionMessage' => $exceptionMessage, 'statusText' => $statusText, 'statusCode' => $statusCode, 'logger' => null !== $this->logger && class_exists(DebugLoggerConfigurator::class) ? DebugLoggerConfigurator::getDebugLogger($this->logger) : null, $headers['X-Debug-Exception-File'] = rawurlencode($exception->getFile()).':'.$exception->getLine(); } $exception = FlattenException::createWithDataRepresentation($exception, null, $headers); return $exception->setAsString($this->renderException($exception)); } /** * Gets the HTML content associated with the given exception. */ { $flattenException = FlattenException::createFromThrowable($exception); $debug = \is_bool($this->debug) ? $this->debug : ($this->debug)($flattenException); if ($debug || !$template = $this->findTemplate($flattenException->getStatusCode())) { return $this->fallbackErrorRenderer->render($exception); } return $flattenException->setAsString($this->twig->render($template, [ 'exception' => $flattenException, 'status_code' => $flattenException->getStatusCode(), include_once \dirname(__DIR__, 4).'/vendor/symfony/framework-bundle/ErrorHandler/ErrorRenderer/RuntimeModeErrorRendererSelector.php'; include_once \dirname(__DIR__, 4).'/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php'; $a = ($container->services['request_stack'] ??= new \Symfony\Component\HttpFoundation\RequestStack()); return $container->services['error_controller'] = new \Symfony\Component\HttpKernel\Controller\ErrorController(($container->services['http_kernel'] ?? self::getHttpKernelService($container)), 'error_controller', new \Symfony\Component\ErrorHandler\ErrorRenderer\SerializerErrorRenderer(($container->privates['debug.serializer'] ?? self::getDebug_SerializerService($container)), \Symfony\Component\ErrorHandler\ErrorRenderer\SerializerErrorRenderer::getPreferredFormat($a), new class(fn () => \Symfony\Bundle\FrameworkBundle\ErrorHandler\ErrorRenderer\RuntimeModeErrorRendererSelector::select($container->getEnv('bool:default::key:web:default:kernel.runtime_mode:'), #[\Closure(name: 'twig.error_renderer.html', class: 'Symfony\\Bridge\\Twig\\ErrorRenderer\\TwigErrorRenderer')] fn () => ($container->privates['twig.error_renderer.html'] ?? $container->load('getTwig_ErrorRenderer_HtmlService')), #[\Closure(name: 'error_handler.error_renderer.cli', class: 'Symfony\\Component\\ErrorHandler\\ErrorRenderer\\CliErrorRenderer')] fn () => ($container->privates['error_handler.error_renderer.cli'] ??= new \Symfony\Component\ErrorHandler\ErrorRenderer\CliErrorRenderer()))) extends \Symfony\Component\DependencyInjection\Argument\LazyClosure implements \Symfony\Component\ErrorHandler\ErrorRenderer\ErrorRendererInterface { public function render(\Throwable $exception): \Symfony\Component\ErrorHandler\Exception\FlattenException { return $this->service->render(...\func_get_args()); } }, \Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer::isDebug($a, true))); }} $flattenException->setAsString($this->serializer->serialize($flattenException, $format, [ 'exception' => $exception, 'debug' => $debug, ])); } catch (NotEncodableValueException) { $flattenException = $this->fallbackErrorRenderer->render($exception); } return $flattenException->setHeaders($flattenException->getHeaders() + $headers); } ) { } public function __invoke(\Throwable $exception): Response { $exception = $this->errorRenderer->render($exception); return new Response($exception->getAsString(), $exception->getStatusCode(), $exception->getHeaders()); } public function preview(Request $request, int $code): Response $this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS); $controller = $event->getController(); $arguments = $event->getArguments(); // call controller $response = $controller(...$arguments); // view if (!$response instanceof Response) { $event = new ViewEvent($this, $request, $type, $response, $event); $this->dispatcher->dispatch($event, KernelEvents::VIEW); $request->headers->set('X-Php-Ob-Level', (string) ob_get_level()); $this->requestStack->push($request); $response = null; try { return $response = $this->handleRaw($request, $type); } catch (\Throwable $e) { if ($e instanceof \Error && !$this->handleAllThrowables) { throw $e; } } $request = $this->duplicateRequest($throwable, $event->getRequest()); try { $response = $event->getKernel()->handle($request, HttpKernelInterface::SUB_REQUEST, false); } catch (\Exception $e) { $f = FlattenException::createFromThrowable($e); $this->logException($e, \sprintf('Exception thrown when handling an exception (%s: %s at %s line %s)', $f->getClass(), $f->getMessage(), basename($e->getFile()), $e->getLine())); $closure = static function (...$args) use (&$listener, &$closure) { if ($listener[0] instanceof \Closure) { $listener[0] = $listener[0](); $listener[1] ??= '__invoke'; } ($closure = $listener(...))(...$args); }; } else { $closure = $listener instanceof WrappedListener ? $listener : $listener(...); } } foreach ($listeners as $listener) { if ($stoppable && $event->isPropagationStopped()) { break; } $listener($event, $eventName, $this); } } /** * Sorts the internal list of listeners for the given event by priority. } else { $listeners = $this->getListeners($eventName); } if ($listeners) { $this->callListeners($listeners, $eventName, $event); } return $event; } } public function dispatch(object $event, ?string $eventName = null): object { if ($this->disabled?->__invoke()) { return $this->dispatcher->dispatch($event, $eventName); } $eventName ??= $event::class; $this->callStack ??= new \SplObjectStorage(); * Handles a throwable by trying to convert it to a Response. */ private function handleThrowable(\Throwable $e, Request $request, int $type): Response { $event = new ExceptionEvent($this, $request, $type, $e, isKernelTerminating: $this->terminating); $this->dispatcher->dispatch($event, KernelEvents::EXCEPTION); // a listener might have replaced the exception $e = $event->getThrowable(); if (!$event->hasResponse()) { $this->finishRequest($request, $type); throw $e; } return $response = $this->handleThrowable($e, $request, $type); } finally { $this->requestStack->pop(); if ($response instanceof StreamedResponse && $callback = $response->getCallback()) { $requestStack = $this->requestStack; if (!$this->handlingHttpCache) { $this->resetServices = true; } try { return $this->getHttpKernel()->handle($request, $type, $catch); } finally { --$this->requestStackSize; } } ) { } public function run(): int { $response = $this->kernel->handle($this->request); if (Kernel::VERSION_ID >= 60400) { $response->send(false); if (\function_exists('fastcgi_finish_request') && !$this->debug) {$app = $app(...$args);exit( $runtime ->getRunner($app) ->run());<?phpuse App\Kernel;require_once dirname(__DIR__).'/vendor/autoload_runtime.php';return static function (array $context) { return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);};