Всем привет!
Недавно после обновления системы до версии PHP 7.4 вместе со всеми вытекающими случилась интересная проблема - штука, которая собирала отчёты начала кидаться в меня ошибками в виде Trying to access array offset on value of type int.
Как ни странно, сама проблема кроется именно в библиотеке PHPExcel, которая по неизвестным причинам не обновляется. Решается довольно легко - посредством редактирования файла DefaultValueBinder.php в самой библиотеке. Но забавная история - далеко не все могут просто вот так редактировать библиотеку, например, если она тянется при помощи composer.
Недолго думая сделал форк этой библиотеки. Предоставляю вам два решения проблемы:
С помощью замены пакета в composer.json
Открываем файл composer.json и во-первых добавляем туда репозиторий. Так же, если вдруг вам нужен, добавляем туда и ExcelBundle.
"repositories": [
{
"url": "https://github.com/ruecoder/ExcelBundle.git",
"type": "git"
},
{
"url": "https://github.com/ruecoder/PHPExcel.git",
"type": "git"
}
],
Затем закидываем в тот же composer.json в блок require сами библиотеки
"require": {
"ruecoder/phpexcel": "dev-master",
"ruecoder/excelbundle": "dev-master"
}
И выполняем composer update
С помощью редактирования библиотеки PHPExcel
Всё просто. Идём по пути и открываем файл vendor/PHPExcel/Classes/PHPExcel/Cell/DefaultValueBinder.php
Нам нужна строка 82 которая выглядит вот так:
} elseif ($pValue[0] === '=' && strlen($pValue) > 1) {
заменяем её на такую
} elseif (0 === strpos($pValue, '=') && strlen($pValue) > 1) {
Всё, готово, всё снова работает как и раньше. :)
