diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/Http/Middleware/DebugLogger.php | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/app/Http/Middleware/DebugLogger.php b/app/Http/Middleware/DebugLogger.php index fe3a5055d4..95b6f4abef 100644 --- a/app/Http/Middleware/DebugLogger.php +++ b/app/Http/Middleware/DebugLogger.php @@ -57,17 +57,22 @@ class DebugLogger implements MiddlewareInterface $bindings = $query['bindings']; foreach ($bindings as $binding) { if (is_string($binding)) { - if (mb_strlen($binding) > 10) { - $binding = mb_substr($binding, 0, 9) . '...'; - } - + // RFC7230 allows only visible ASCII. "?" breaks later substitutions. + $binding = strtr($binding, ["\n" => '\n', "\t" => '\t']); + $callback = static fn (array $matches): string => '\\x' . sprintf('%02X', ord($matches[0])); + $binding = preg_replace_callback('/[^ !->@-~]/', $callback, $binding); $binding = "'" . $binding . "'"; + + if (mb_strlen($binding) > 30) { + $binding = mb_substr($binding, 0, 27) . '...'; + } } else { $binding = (string) $binding; } $sql = preg_replace('/\?/', $binding, $sql, 1); } + $message = sprintf('%s (%.3f ms)', $sql, $time); $response = $response->withAddedHeader('x-debug-sql', $message); } |
