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插件了,要不是,有太多代碼需要修改,估計我直接換插件了。

相關推薦:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536630.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536630.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536630.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

優雅的redux異步中間件 redux-effect

不吹不黑,redux蠻好用。只是有時略顯繁瑣,叫我定義每一個action、action type、使用時還要在組件上綁定一遍,臣妾做不到呀!下面分享一種個人比較傾向的極簡寫法,仍有待完善,望討論。 github: github.com/li…

oracle 中累加函數,Oracle 分析函數分組累加!

用戶號碼 登陸時間13000000002010-01-0113000000012010-01-0113000000022010-01-0213000000012010-01-0213000000032010-01-0313000000022010-01-0313000000042010-01-0413000000032010-01-0413000000042010-01-0213000000062011-01-0413000000012011-01-04剔除重復登陸的用戶,…

asp.net core系列 48 Identity 身份模型自定義

一.概述 ASP.NET Core Identity提供了一個框架,用于管理和存儲在 ASP.NET Core 應用中的用戶帳戶。 Identity添加到項目時單個用戶帳戶選擇作為身份驗證機制。 默認情況下,Identity可以使用的 Entity Framework (EF) Core 數據模型。 本文介紹如何自定義…

oracle中創建游標,oracle 存儲過程創建游標

Oracle與Sql Server差異點詳解1、create函數或存儲過程異同點Oracle 創建函數或存儲過程一般是 create or replace ……SQL SERVER 則是在創建之前加一條語句,先判斷是否已經存在,如果存在刪除已有的函數或存儲過程。函數語句:if exists (sel…

hosts文件不起作用

突然發現電腦的hosts文件不起作用了。之前用的狠正常,近期也沒有修改過。首先排除什么格式、DNS、注冊表之類的問題。最終解決辦法(權限問題:有問題的hosts文件圖標上有個鎖):1.C:\Windows\System32\drivers\etc下復制…

oracle面臨的挑戰,未來數據庫管理員面臨的三大挑戰

原標題:未來數據庫管理員面臨的三大挑戰前言今天的數據庫管理員面臨著三大挑戰:工作重心向以應用程序為中心轉移、支持多個數據庫平臺的需求、在云端以及在本地管理數據庫性能的責任不斷擴大。為了在今天和未來都能站穩腳跟,數據庫管理員需要…

Reducer拆分

看到Redux官網上Reducer拆分后,最后生成的state的組合有點懵,主要是對combineReducers()這個工具類不了解,其實該方法是消除了一些樣板代碼。 如todoApp事例: import { combineReducers } from reduxconst todoApp combineReduce…

oracle中asmcmd,ASM工具asmcmd

Oracle的ASM一直不夠透明,但Oracle還是提供了一些工具來訪問ASM磁盤組的,asmcdm就是其中一個工具,本文將對其進行詳細介紹。感覺Oracle的ASM一直很不透明,不過Oracle還是提供了一些工具來訪問ASM磁盤組的,asmcdm就是其中一個工具。…

php頁面底部信息居中,css底部如何局中?css三種居中方法

本篇文章給大家帶來的內容是關于css底部如何局中?css三種居中方法,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。某天組長讓我改一個表格的樣式,要求底部局中。當時想很簡單的嘛,哼哧哼哧…

打造汽車“安卓平臺”,大眾或親手干掉傳統汽車產業

干掉傳統汽車產業的,很可能是大眾,而不是特斯拉。 于無聲處聽驚雷。 2019年的日內瓦車展,看起來并沒有傳出太大的新聞。汽車世界的目光,依然被特斯拉的喧囂所吸引。 然而,大眾汽車展臺上發生的一件看似不起眼的小事情&…

php返回101,PHP 101:變量與函數

功能很好.我看到功能徽標()比$logo更好. echo不占用太多內存,但$logo確實如此.即使函數logo()需要一些東西,它也將由PHP自己的垃圾收集器處理.您還可以使用這些函數來確保不會濫用分配的內存.> memory_get_peak_usage();> memory_get_usage();說明:Upon the e…

從 SPA 到 PWA:Web App的下一站在哪?

從AJAX(Asynchronous JavaScript XML,異步JavaScript和XML)開始, 尤其是 AngularJS 推出之后,SPA(Single Page App,單頁應用)已經成為前端 App 的必選方案。 SPA 可以在客戶端提供完…

php如何調用手機撥打電話,ionic調用手機系統的撥打電話

linux中wc命令用法Linux系統中的wc(Word Count)命令的功能為統計指定文件中的字節數.字數.行數,并將統計結果顯示輸出. 1.命令格式: wc [選項]文件... 2.命令功能: 統計指定文件中的字節數. ...POJ1364 King-差分Description Once, in one kingdom, ther…

使用class-validator替換Joi包的方法

前言 對每個接口的傳入參數進行校驗,是一個Web后端項目的必備功能,有一個npm包叫Joi可以很優雅的完成這個工作,比如這樣子: const schema {userId: Joi.string() }; const {error, value} Joi.validate({ userId: a string }, s…

linux服務器下降,linux - 遠程升級Ubuntu:如何最大程度地降低丟失服務器的風險? - Ubuntu問答...

問題描述背景:由于raid控制器的不兼容性問題,我被迫將服務器從Ubuntu 8.04 LTS遠程升級到10.04 LTS。與服務器的Internet連接比較穩定,很少掉線。盡管如此,我還是擔心在升級時會丟失通過SSH的連接,從而使服務器處于無法…

Linux中英文命令對應

本文我們把Linux的中英文命令做了對應翻譯,給需要的朋友參考一下。很多朋友在論壇上找Linux英文命令,我們給大家整理了比較全的Linux英文命令,并且附上了對應的中文意思。 su:Swith user 切換用戶,切換到root用戶 cat:…

linux實驗四文件安全,西北農林科技大學Linux實驗四 用戶和文件安全

一、 實驗目的實驗四 用戶和文件安全1. 理解用戶、組的概念2. 理解/etc/passwd、/etc/group、/etc/shadow文件 3. 練習useradd、groupadd、gpasswd、groups命令二、 實驗內容 1. 添加用戶 2. 添加組3. 添加用戶到工作組 4. 改變目錄原始組 5. 建立多個用戶共享的目錄6. 理解文件…

Unable to resolve dependency問題解決

Unable to resolve dependency 是一個讓我頭疼的問題 之前總是陰差陽錯調試好 但是也沒有總結出來方法 但是今天找到了 方法來源 https://jingyan.baidu.com/article/19192ad8c489dfe53e5707ee.html 原因就是用戶的gradle.properties 設置了代理,將文件內的代理注釋…

linux 服務器進程,如何查看Linux服務器的進程

Linux服務器正常啟動后,提供服務時會調用程序,占用進程。這時候如何查看系統中有哪些進程在被調用呢?我們可以通過以下命令來查看。1.psps命令是最基本同時也是非常強大的進程查看命令。使用該命令可以確定有哪些進程正在運行和它所運行的狀態…

計數排序與桶排序python實現

計數排序與桶排序python實現 計數排序 計數排序原理: 找到給定序列的最小值與最大值 創建一個長度為最大值-最小值1的數組,初始化都為0 然后遍歷原序列,并為數組中索引為當前值-最小值的值+1 此時數組中…