PHPExcel错误:不赞成使用大括号的数组和字符串偏移量访问语法



我刚刚将phpexcel更新为phpspreadsheet,我注意到弹出了这个错误:

ErrorException(E_DEPRECATED(不赞成使用大括号的数组和字符串偏移量访问语法

需要'Classes/PHPExcel.php';

这是我的代码的一部分,它触发了上述错误:

文件:project/public/Classes/PHPExcel/Shared/ZipStreamWrapper.php

public function stream_open($path, $mode, $options, &$opened_path)
{
// Check for mode
if ($mode{0} != 'r') { //Error Line
throw new PHPExcel_Reader_Exception('Mode ' . $mode . ' is not supported. Only read mode is supported.');
}

文件:project/public/Classes/PHPExcel.php

/** PHPExcel root directory */
if (!defined('PHPEXCEL_ROOT')) {
define('PHPEXCEL_ROOT', dirname(__FILE__) . '/');
require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); //Error Line
}

文件:app/Http/Controllers/analyticsAuth/statement.old.php

use PHPExcel_Reader_Excel2007;
use PHPExcel; 
use PHPExcel_IOFactory;
use ZipArchive;
require 'Classes/PHPExcel.php'; //Error Line

文件:project/public/Classes/PHPExcel/Autoloader.php

PHPExcel_Autoloader::Register();
PHPExcel_Shared_ZipStreamWrapper::register(); //Error Line
if (ini_get('mbstring.func_overload') & 2) {
throw new Exception('Multibyte function overloading in PHP must be disabled for string functions (2).');
}

谢谢

这可以通过将大括号{}替换为方括号[]来修复

我要赞扬@HeySora,他发表了评论,并指出了这起特殊案件中的确切问题。

这在php7中不再使用$mode{0}。它已被弃用。不用这个$mode[0]

最新更新