#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 снова для ввода.