crmeb v3订单导出功能提示连接永久转移,错误500问题修复

 3456

最近再给客户搭建crmeb电商小程序管理系统的时候,发现crmeb V3版的顶到导出功能无法使用,提示“连接永久转移”。


crmeb v3订单导出功能提示连接永久转移,错误500问题修复


于是就一步一步的打印断点,找出问题所在,终于最后在程序执行导出数据之前,出现错误,具体文件为:app/admin/model/order/StoreOrder.php 的 SaveExcel 方法中的如下代码:

PHPExcelService::setExcelHeader(['订单号', '收货人姓名', '收货人手机', '收件人电话', '收货地址', '商品信息','...'])

这句呢意思就是用 PHPExcel 扩展将数据导出到文件,里面的数组是 EXCEL 的表头信息。

这样看的话就是 PHPExcel 本身的问题了,上网上查了一下,最终问题解决。


具体原因是crmeb V3版最新的安装对环境要求是PHP7.2,但是 PHPExcel 使用的是最新的1.8版本的,但是这个版本作者已经不维护了,推荐使用 PhpSpreadsheet


既然找到问题了,那我们就来解决一下,具体如下:

修改 vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/OLE.php 第288行使用 continue,PHP7不支持,修改为 continue 2 即可,如下:

switch ($type) {
    case self::OLE_PPS_TYPE_ROOT:
        $pps = new PHPExcel_Shared_OLE_PPS_Root(null, null, array());
        $this->root = $pps;
        break;
    case self::OLE_PPS_TYPE_DIR:
        $pps = new PHPExcel_Shared_OLE_PPS(null, null, null, null, null, null, null, null, null, array());
        break;
    case self::OLE_PPS_TYPE_FILE:
        $pps = new PHPExcel_Shared_OLE_PPS_File($name);
        break;
    default:
        continue 2; // 修改这里
}

然后修改:crmeb/services/PHPExcelService.php 第 130 行:

$objWriter = \PHPExcel_IOFactory::createWriter(self::$PHPExcel, 'Excel2017');

为:

$objWriter = \PHPExcel_IOFactory::createWriter(self::$PHPExcel, 'Excel5');

这样问题就解决了。测试一下,导出是不是很好用呢~~


总结

这个主要是THINKPHP 扩展 PHPEXCEL 与 PHP7.2等高版本兼容问题,但是crmeb官网最这个问题还是没有解决,讨论论坛也没有一个非常具体的解决方法,这里给补上。



本文网址:https://www.zztuku.com/detail-9765.html
站长图库 - crmeb v3订单导出功能提示连接永久转移,错误500问题修复
申明:如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐