phpexcel.php linux,phpexcel在linux系统报错如何解决

最近有个tp3.2的项目迁移到linux系统上了,突然有天发现原本在win server 2008上运行没问题的excel导出功能在新的系统上不能使用了。报错如下:

8fa52dd7330ef6d5be4f5026cb4cf6a6.png 说是1762行有问题,找到这个文件的代码看看:/**

* Get an instance of this class

*

* @access public

* @param PHPExcel $workbook Injected workbook for working with a PHPExcel object,

* or NULL to create a standalone claculation engine

* @return PHPExcel_Calculation

*/

public static function getInstance(PHPExcel $workbook = NULL) {

if ($workbook !== NULL) { if (isset(self::$_workbookSets[$workbook->getID()])) { return self::$_workbookSets[$workbook->getID()];

} return new PHPExcel_Calculation($workbook);

} if (!isset(self::$_instance) || (self::$_instance === NULL)) { self::$_instance = new PHPExcel_Calculation();

} return self::$_instance;

} // function getInstance()

这个函数getInstance(PHPExcel $workbook = NULL)

发现这个函数 定义的时候多了个PHPExcel ,我试着把它删除,上传,测试,又报错了:

b9a97df36f0ae4c58f43626a70269de2.png

这次是1721行,然后再次找到这个位置的文件删除 PHPExcel这个东东,然后继续上传,测试,后面大多数错误都是这种,删掉函数定义时的PHPExcel即可,但是错误一个接一个,这是需要替换的文件:

09727cea19950b50ff054198133e6e1a.png

这个地方要加个空格,这样才不会替换错误,好了,继续上传测试.

eeb5f8b53299f63ef534a15705146c98.png

然后就这样了…..当时内心是崩溃的…

继续找问题吧,在测试php文件里面输出变量进行测试。PHPExcel\PHPExcel\Calculation\Functions.php 下面这个文件,中有个 **TYPE**函数,将其中的break去掉,上传,ok了/**

* TYPE

*

* Returns a number that identifies the type of a value

*

* @param value The value you want tested

* @return number N converts values listed in the following table

* If value is or refers to N returns

* A number 1

* Text 2

* Logical Value 4

* An error value 16

* Array or Matrix 64

*/

public static function TYPE($value = NULL) {

$value= self::flattenArrayIndexed($value); if (is_array($value) && (count($value) > 1)) { $a = array_keys($value); $a = array_pop($a); // Range of cells is an error

if (self::isCellValue($a)) { return 16; // Test for Matrix

} elseif (self::isMatrixValue($a)) { return 64;

}

} elseif(empty($value)) { // Empty Cell

return 1;

} $value= self::flattenSingleValue($value); if (($value === NULL) || (is_float($value)) || (is_int($value))) { return 1;

} elseif(is_bool($value)) { return 4;

} elseif(is_array($value)) { return 64; break;

} elseif(is_string($value)) { // Errors

if ((strlen($value) > 0) && ($value{0} == '#')) { return 16;

} return 2;

} return 0;

} // function TYPE()

这是完整流程,线上系统用的是centos7,php是也是7。这个估计是不兼容造成的,也没有再深一步研究了,毕竟其实有新的excel插件了,要不是,有太多代码需要修改,估计我直接换插件了。

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值