TL; DR: я использую библиотеку Nette Tracy, которая создает сводный (.log) и подробный (.html) файл о любых возникающих ошибках, и я пытаюсь загрузить их в AWS S3. Файл .log появляется успешно, но файл .html нигде не видно.
Я использую библиотеку Nette Tracy и пытаюсь загрузить весь вывод в корзину S3.
До сих пор я создал оболочку S3 и вручную вызвал исключение, чтобы протестировать его, но это удалось только частично. Оболочка S3 существует и работает частично, поскольку первоначальный «обзорный» документ (error.log) успешно создан - это просто HTML-документ, который не отображается. Он отлично работает с локальным хранилищем, но S3 предпочтительнее.
Когда он пытается самостоятельно записать фактическую информацию об исключении (файл HTML), функция fopen возвращает false. В результате из функции также возвращается false (функция ниже), и файл не создается.
В файле error.log, который фактически загружен, записывается ниже (имя корзины и путь удален):
Предупреждение PHP: fopen (s3: \ BUCKET \ debug \ tracy \ exception - 2019-07-07--00-30--459a553c82.html): не удалось открыть поток: нет такого файла или каталога в C: \ path \ to \ file \ tracy \ Tracy \ BlueScreen \ BlueScreen.php: 97 @ http://mydevelopment.site
Не совсем уверен, куда идти отсюда? Любая помощь указатели приветствуются!
Это код, являющийся частью библиотеки Tracy, в котором записаны полные сведения об исключении / ошибке:
/**
* Renders blue screen to file (if file exists, it will not be overwritten).
*/
public function renderToFile(\Throwable $exception, string $file): bool
{
if ($handle = @fopen($file, 'x')) {
ob_start(); // double buffer prevents sending HTTP headers in some PHP
ob_start(function ($buffer) use ($handle): void { fwrite($handle, $buffer); }, 4096);
$this->renderTemplate($exception, __DIR__ . '/assets/page.phtml', false);
ob_end_flush();
ob_end_clean();
fclose($handle);
return true;
}
return false;
}