Kürzlich wurde ein tp3.2-Projekt auf das Linux-System migriert. Eines Tages stellte ich plötzlich fest, dass die Excel-Exportfunktion, die ursprünglich auf Win Server 2008 einwandfrei lief, auf dem neuen System nicht verwendet werden konnte. Der Fehler wird wie folgt gemeldet:
Es wird gesagt, dass es ein Problem mit Zeile 1762 gibt. Suchen Sie den Code dieser Datei und schauen Sie nach:
/** * 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()
Diese Funktion getInstance(PHPExcel $workbook = NULL)
Ich habe festgestellt, dass es ein zusätzliches PHPExcel gab, als diese Funktion definiert wurde. Ich habe versucht, es zu löschen, hochzuladen und zu testen, aber der Fehler wurde erneut gemeldet:
Diesmal war es Zeile 1721, und dann habe ich die Datei an diesem Ort wieder gefunden und dann mit dem Hochladen und Testen fortgefahren PHPExcel beim Definieren der Funktion, aber die Fehler kommen nacheinander. Dies ist die Datei, die ersetzt werden muss:
Sie müssen hier ein Leerzeichen hinzufügen, damit es keine Ersetzungsfehler gibt , lasst uns mit dem Hochladen und Testen fortfahren
Dann passierte das... Ich war damals untröstlich...
Weiter Finden Sie das Problem und geben Sie die Variablen in der Test-PHP-Datei zum Testen aus.
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()
Dies ist der vollständige Prozess. Das Online-System verwendet Centos7 und PHP ist ebenfalls 7. Dies liegt wahrscheinlich an der Inkompatibilität, und ich habe es nicht weiter untersucht. Schließlich gibt es tatsächlich ein neues Excel-Plug-In. Wenn nicht, müssen zu viele Codes geändert werden Plug-in.
Verwandte Empfehlungen:
Teilen der Methode zum Importieren von Excel aus PHPExcel in TP3.2
PHP verwendet PHPExcel zum Stapeln In die Datenbank hochladen
Das obige ist der detaillierte Inhalt vonSo beheben Sie den PHPExcel-Fehler im Linux-System. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!