Разработка сайтов и программного обеспечения, системное администрирование, обучение программированию и работе с СУБД MySQL

in english

Решение ошибки Uninitialized string offset в Excel Spreadsheet Reader

Главная Статьи Ошибка Uninitialized string offset в Excel Spreadsheet Reader

Часто встречается с переездом с 32-разрядной системы на 64-разрядную следующая ошибка: Notice: Uninitialized string offset: 2199023255040 в spreadsheet_excel_reader.php или oleread.inc. Чтобы ее исправить, нужно заменить существующую функцию GetInt4d($data, $pos) на следующую:

function GetInt4d($data, $pos) {
// x64
if (PHP_INT_SIZE == 8) {
	$_or_24 = ord($data[$pos+3]);
	if ($_or_24>=128)
	$_ord_24 = -abs((256-$_or_24) << 24);
	else
		$_ord_24 = ($_or_24&127) << 24;
	return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | $_ord_24;
}
else {
	// x86
	return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | (ord($data[$pos+3]) << 24);
}	
}

Реклама:

Метки: php.

Комментарии:

ayoke:
работает, спасибо!
Иван:
Большое спасибо. Дома работало, на сервере нет. Нашел ошибку в цикле по блокам, но причину понять не мог. Заметка очень помогла. Все заработало.
alexandr:
спасибо, решение помогло!
имя:

e-mail (не публикуется):

комментарий:

© Ткачев Филипп, 2005—2018
Программист, веб-разработка и прикладное ПО.
Все права защищены.