Commit version 24.12.13800
This commit is contained in:
95
libs/Nette/Tracy/Debugger/ProductionStrategy.php
Normal file
95
libs/Nette/Tracy/Debugger/ProductionStrategy.php
Normal file
@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This file is part of the Tracy (https://tracy.nette.org)
|
||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tracy;
|
||||
|
||||
use ErrorException;
|
||||
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
final class ProductionStrategy
|
||||
{
|
||||
public function initialize(): void
|
||||
{
|
||||
if (!function_exists('ini_set') && (ini_get('display_errors') && ini_get('display_errors') !== 'stderr')) {
|
||||
Debugger::exceptionHandler(new \RuntimeException("Unable to set 'display_errors' because function ini_set() is disabled."));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function handleException(\Throwable $exception, bool $firstTime): void
|
||||
{
|
||||
try {
|
||||
Debugger::log($exception, Debugger::EXCEPTION);
|
||||
} catch (\Throwable $e) {
|
||||
}
|
||||
|
||||
if (!$firstTime) {
|
||||
// nothing
|
||||
|
||||
} elseif (Helpers::isHtmlMode()) {
|
||||
if (!headers_sent()) {
|
||||
header('Content-Type: text/html; charset=UTF-8');
|
||||
}
|
||||
|
||||
(function ($logged) use ($exception) {
|
||||
require Debugger::$errorTemplate ?: __DIR__ . '/assets/error.500.phtml';
|
||||
})(empty($e));
|
||||
|
||||
} elseif (Helpers::isCli()) {
|
||||
// @ triggers E_NOTICE when strerr is closed since PHP 7.4
|
||||
@fwrite(STDERR, "ERROR: {$exception->getMessage()}\n"
|
||||
. (isset($e)
|
||||
? 'Unable to log error. You may try enable debug mode to inspect the problem.'
|
||||
: 'Check log to see more info.')
|
||||
. "\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function handleError(
|
||||
int $severity,
|
||||
string $message,
|
||||
string $file,
|
||||
int $line,
|
||||
array $context = null
|
||||
): void
|
||||
{
|
||||
if ($severity & Debugger::$logSeverity) {
|
||||
$err = new ErrorException($message, 0, $severity, $file, $line);
|
||||
@$err->context = $context; // dynamic properties are deprecated since PHP 8.2
|
||||
Helpers::improveException($err);
|
||||
} else {
|
||||
$err = 'PHP ' . Helpers::errorTypeToString($severity) . ': ' . Helpers::improveError($message, (array) $context) . " in $file:$line";
|
||||
}
|
||||
|
||||
try {
|
||||
Debugger::log($err, Debugger::ERROR);
|
||||
} catch (\Throwable $e) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function sendAssets(): bool
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public function renderLoader(): void
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public function renderBar(): void
|
||||
{
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user