From 3113e5090560ec3847d4dfef898bcbfd93a74202 Mon Sep 17 00:00:00 2001 From: Aleksey Filippov Date: Tue, 24 Mar 2026 14:49:26 +0300 Subject: [PATCH] =?utf8?q?fix(ERP-33):=20TelegramTarget=20=E2=80=94=20?= =?utf8?q?=D1=8D=D0=BA=D1=80=D0=B0=D0=BD=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?utf8?q?=D1=82=D1=8C=20\n=20=D0=B2=20error=5Ftracking.log?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Многострочные ошибки (содержащие $_SERVER dump) ломали формат файла error_tracking.log: file() разбивала одну запись на множество строк, каждая выводилась как "Некорректная строка". Фикс: str_replace \n → \\n при записи, убран error_log спам. --- erp24/log/TelegramTarget.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/erp24/log/TelegramTarget.php b/erp24/log/TelegramTarget.php index bd4435ea..8018f470 100644 --- a/erp24/log/TelegramTarget.php +++ b/erp24/log/TelegramTarget.php @@ -52,10 +52,12 @@ class TelegramTarget extends \yii\log\Target $normalizedCurrentError = $this->normalizeText($currentError); $currentErrorHash = md5($normalizedCurrentError); + // Экранируем переносы строк для хранения — одна запись = одна строка файла + $escapedError = str_replace(["\r\n", "\n", "\r"], '\\n', $currentError); + foreach ($errorLines as &$line) { $parts = explode('|', $line, 4); if (count($parts) < 4) { - error_log("Некорректная строка: " . $line); continue; } [$date, $count, $hash, $errorText] = $parts; @@ -68,19 +70,16 @@ class TelegramTarget extends \yii\log\Target return false; } - $count++; $line = implode('|', [$currentDate, $count, $hash, $errorText]); break; } } - if (!$errorExists) { - $errorLines[] = implode('|', [$currentDate, 1, $currentErrorHash, $currentError]); + $errorLines[] = implode('|', [$currentDate, 1, $currentErrorHash, $escapedError]); } - file_put_contents($filePath, implode(PHP_EOL, $errorLines) . PHP_EOL); return true; -- 2.39.5