Yii2.0 PHPExcel导出Excel文件报找不到该文件错误?

8 篇文章 0 订阅
3 篇文章 0 订阅

阐述下:我改bug的过程,如下:这个项目是我接手外包项目的二次开发,某天突然发现,线上导出功能报错。检查线下代码无错误并导出功能没有报错,本地Apache服务器测试-->正常,打开导出的execl文件中数据也正常;到服务器上就会报找不到该文件错误,如图:

谷歌浏览器报文件已迁移什么的。由于代码已经线上运行了n天,且本地代码导出功能正常,所以肯定代码程序没问题,百度了一下发现大致

第一个是php7版本问题,phpexcel对在php7中使用save(‘php://output’)出现ERR_INVALID_RESPONSE的错误,主要是下面错误导致:

    (1)header和缓冲区的错误导致,下面示例代码可以正常导出:

    header('Content-type: application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"');
    header("Content-Disposition: attachment; filename=$fileName.xls");
    header('Cache-Control: max-age=0');
    //header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    //header ('Cache-Control: cache, must-revalidate');
    header ('Pragma: public');
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');


    (2)错误语法导致:打开PHPExcel\Calculation\Functions.php文件,删除掉581行的break即可

 

 

但是我线上线下php版本都是php5.5,而且phpexcel版本1.8.1已经最新版本,所以这个问题pass。但我还是查看了一下,事实证明不是这个原因导致

 

第二个是目录的权限问题

      我当即在服务器上修改项目所以的目录都有777的权限,但是问题还是没解决,导出还是报错

 

没办法了所有又去代码中debug发现都在save(‘php://output’)报错,期间又百度谷歌了一番,解决的方法都是大同小异,问题还是没解决。

最后只能线上调试代码到导出phpexcel文件  \beifen_carrental\vendor\phpoffice\phpexcel\Classes\PHPExcel\Writer\Excel2007.php  save方法中

写死了路径(图片//部分),发现导出功能正常。

 

上面方法中解决了导出问题。

总结:出现这个bug的问题应该是路径问题,但我不知道为什么会出现这个问题,我在php.ini配置文件中修改了upload_tmp_dir路径

解决图片上传问题(和phpexcel导出功能一样,也是这个原因),大致就是临时文件地址保存错误。

其中解决问题的时候发现几个类似的bug解决方案:

http://blog.csdn.net/qq_20480611/article/details/48003871

https://www.jianshu.com/p/b93a69bf229e

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值