phpExcel 报错:ERR_INVALID_RESPONSE

phpExcel 报错:ERR_INVALID_RESPONSE

  • 一、出现场景
  • 二、寻找解决办法
    • 1、网上解决方案
      • 1)、缓冲区问题
      • 2)、factory581行报错,删除break
    • 2、我的这个问题解决方案,Linux下安装zip扩展
  • 三、zip扩展

一、出现场景

  • thinkphp 框架中使用 phpoffice/phpexcel,直接导出Excel表格浏览器下载,报错:ERR_INVALID_RESPONSE

  • 注意:在 本地 windows 环境导出没问题,在 线上 Linux 环境才出现该问题。

  • 问题截图:

在这里插入图片描述

二、寻找解决办法

1、网上解决方案

1)、缓冲区问题

  • 在调用save("php://output")之前调用ob_clean(),部分代码如下
        ob_clean(); //清空缓存
        //最后通过浏览器输出
        $fn = "文件的名字(" . date("Y.m.d") . ").xls";    //要保存的文件名
        header('Content-Type: application/vnd.ms-excel; charset=utf-8');
        header("Content-Disposition: attachment;filename={$fn}");
        header('Cache-Control: max-age=0');
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');
        exit;

2)、factory581行报错,删除break

  • factory581行报错,删除break;
PHPExcel\Calculation\Functions.php文件,删除掉581行的break
  • 我们的 phpoffice/phpexcel 是 composer 安装的,每次更新都得去改源码,不建议修改源码,就算能解决问题,也不予采纳。

2、我的这个问题解决方案,Linux下安装zip扩展

  • 【解决】我这个问题就是Linux缺少了 zip 扩展,安装即可~

三、zip扩展

  • windows下的php(我的版本是7.3.3)是自带zip扩展的,php/ext目录下都没有 php_zip.dll 文件,如图所示

在这里插入图片描述

  • Linux下的php没有安装 zip 扩展
                       

点击阅读全文

上一篇 2023年 5月 26日 am10:41
下一篇 2023年 5月 26日 am10:42