So I installed Laravel Debugbar today in an attempt to make my local dev a better experience, and for the most part, it has. An issue has arisen though when I try to download an Excel generated from PhpOfficePhpSpreadsheet (https://phpspreadsheet.readthedocs.io/en/latest/) Here's a snippet of the code in question:
$excelFile = new Spreadsheet();
// Load stuff from DB in Sheets, etc. etc.
$writer = new Xlsx($excelFile);
$filename = 'testing.xlsx';
$writer->save('php://output');
This works great, and the content is loaded into and downloaded as an .xlsx
file without issue. When I open the file, I get this alert:
We found a problem with some content in 'testing.xlsx'. Do you want us to try to recover as much as we can? If you trust the source of this workbook, click Yes.
I click "Yes", and then I get this alert:
Excel was able to open the file by repairing or removing the unreadable content.
I click "Delete" and my file is opened, with nothing deleted (compared file against previous commit on master
branch, no change).
Now here's the fun part, I only get this alert when Debugbar is enabled. In .env
, I have DEBUGBAR_ENABLED=true
, and if I set that to DEBUGBAR_ENABLED=false
and reload/redownload, I don't get the alert. Has anyone seen this issue before? Why would Debugbar be messing with this? Is it an issue with $writer->save('php://output');
being polluted by Debugbar's injection?
Sidenote, this will be a non-issue in production
, as Debugbar is a require-dev
dependence, but I'm just curious if I can avoid this during local development or not.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…