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;
}