Ошибка смещения неинициализированной строки в скрипте импорта PHP

#php #apache #web-hosting

Вопрос:

У меня есть скрипт импорта из excel как часть CMS, который ранее работал без проблем.

Мой провайдер общего хостинга недавно обновил свою инфраструктуру, включая PHP с 5.1 до 5.2.6, и теперь скрипт возвращает «Неинициализированное смещение строки: -XXX в /path/scriptname.php в строке 27» (XXX-уменьшающееся число с 512 и /path/scriptname.php конечно, это полный путь к рассматриваемому сценарию).

Он возвращает эту ошибку для каждой строки файла Excel. Строка 27-это просто возврат из функции, которая является первой точкой, в которой обрабатываются импортированные данные:

 function GetInt4d($data, $pos) {
        return ord($data[$pos]) | (ord($data[$pos 1]) << 8) | (ord($data[$pos 2]) << 16) | (ord($data[$pos 3]) << 24); 
}
 

В конце концов он взрывается с «Фатальной ошибкой: Разрешенный размер памяти 47185920 байт исчерпан (пытался выделить 71 байт) в /path/scriptname.php на линии 133».

В журналах ошибок Apache нет ничего полезного. Я в тупике. У кого-нибудь есть какие-нибудь идеи, по крайней мере, о том, где искать? Было бы полезно даже знать, будет ли это что-то в моем сценарии или что-то связанное с обновлением. У меня была еще одна проблема с другим сайтом того же провайдера, который (после обновления) не мог записывать сеансы в каталог tmp (с тех пор решен), но я уверен, что это не так (?).

РЕДАКТИРОВАТЬ: Поскольку оказалось, что ответ был связан с тем, что версия синтаксического анализатора каким-то образом несовместима с PHP 5.2.6, я подумал, что кому-то может пригодиться, что рассматриваемый синтаксический анализатор-это программа для чтения электронных таблиц Excel .

Ответ №1:

Ответ №2:

Неинициализированное смещение строки:

… означает, что $data это не массив.

Ответ №3:

Спасибо за информацию, ситуация «разрешилась сама собой» благодаря тому, что я нашел более свежую версию библиотеки синтаксического анализа, которую я использовал. Я предполагаю, что проблема была как-то связана с различием между версиями php, хотя я точно не уверен, в чем именно. Исправлено, но расстраивает.

ПРАВКА: Я собираюсь принять ответ Тилля исключительно в интересах закрытия вопроса. Thx снова для ввода.