Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 影响Excel下载的Laravel调试栏_Php_Laravel_Laravel 6_Phpspreadsheet_Phpdebugbar - Fatal编程技术网

Php 影响Excel下载的Laravel调试栏

Php 影响Excel下载的Laravel调试栏,php,laravel,laravel-6,phpspreadsheet,phpdebugbar,Php,Laravel,Laravel 6,Phpspreadsheet,Phpdebugbar,因此,我今天安装了Laravel Debugbar,试图让我的本地开发人员获得更好的体验,而且在很大程度上,它做到了。但是,当我尝试下载从PhpOffice\PhpSpreadsheet()生成的Excel时,出现了一个问题,下面是一段有问题的代码: $excelFile=新电子表格(); //从数据库中以表格等形式加载内容。 $writer=newxlsx($excelFile); $filename='testing.xlsx'; $writer->save($writer)php://ou

因此,我今天安装了Laravel Debugbar,试图让我的本地开发人员获得更好的体验,而且在很大程度上,它做到了。但是,当我尝试下载从PhpOffice\PhpSpreadsheet()生成的Excel时,出现了一个问题,下面是一段有问题的代码:

$excelFile=新电子表格();
//从数据库中以表格等形式加载内容。
$writer=newxlsx($excelFile);
$filename='testing.xlsx';
$writer->save($writer)php://output');
这非常有效,内容以
.xlsx
文件的形式加载和下载,没有问题。当我打开文件时,会收到以下警报:

我们发现“testing.xlsx”中的某些内容存在问题。你想让我们尽力恢复吗?如果您信任此工作簿的来源,请单击“是”

我单击“是”,然后收到此警报:

Excel能够通过修复或删除不可读的内容来打开该文件

我单击“删除”,打开我的文件,没有删除任何内容(将文件与
master
branch上的上一次提交进行比较,没有更改)

现在是有趣的部分,我只有在启用调试栏时才会收到此警报。在
.env
中,我启用了
DEBUGBAR\u=true
,如果我将其设置为
DEBUGBAR\u ENABLED=false
并重新加载/重新下载,则不会收到警报。以前有人见过这个问题吗?Debugbar为什么要搞砸这件事?这是否是
$writer->save>的问题php://output');被Debugbar的注入污染了


旁注,这在
生产中不会成为问题,因为Debugbar是一个
需要开发的依赖项,但我只是好奇我是否能在本地开发过程中避免这种情况。

显然,官方文档已经对此进行了询问和回答;只是有点难找。通过debugbar,我对对象污染的看法是正确的,简单的解决方法是添加
exit()
$writer->save()之后

$excelFile=新电子表格();
//从数据库中以表格等形式加载内容。
$writer=newxlsx($excelFile);
$filename='testing.xlsx';
$writer->save($writer)php://output');
退出();
关于
ob_clean()
和/或
ob_end_clean()
ob_flush()
等还有一些注释,但这些注释都不能用于Laravel+Debugbar。供参考:


旁注,这会阻止Debugbar处理与Excel下载相关的
GET
POST
请求,因此需要一些互让。只需在本地注释掉
exit()
即可进行调试,但Excel将被标记为已损坏。使用
exit()
打开的简单重复操作将处理此问题。

显然,官方文档中已对此进行了询问和回答;只是有点难找。通过debugbar,我对对象污染的看法是正确的,简单的解决方法是添加
exit()
$writer->save()之后

$excelFile=新电子表格();
//从数据库中以表格等形式加载内容。
$writer=newxlsx($excelFile);
$filename='testing.xlsx';
$writer->save($writer)php://output');
退出();
关于
ob_clean()
和/或
ob_end_clean()
ob_flush()
等还有一些注释,但这些注释都不能用于Laravel+Debugbar。供参考:

旁注,这会阻止Debugbar处理与Excel下载相关的
GET
POST
请求,因此需要一些互让。只需在本地注释掉
exit()
即可进行调试,但Excel将被标记为已损坏。启用
exit()
的简单重复操作将处理此问题