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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014273681/article/details/78893911

阐述下:我改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的权限,但是问题还是没解决,导出还是报错


扫描二维码关注公众号,回复: 5032527 查看本文章

没办法了所有又去代码中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











猜你喜欢

转载自blog.csdn.net/u014273681/article/details/78893911
今日推荐