PHP ithalat script başlatılmamış dize ofset hatası

2 Cevap php

Ben daha önce sorunu olmadan koştum bir CMS parçası olarak bir ithalat-from-excel komut dosyası var.

Benim paylaşılan hosting sağlayıcısı son zamanlarda 5.1 'den 5.2.6 için PHP de dahil olmak üzere, kendi altyapı yükseltti ve komut artık "offset Başlatılmamış dize: in / 27. satırda yolu / scriptname.php-XXX" döndürür (XXX azalan bir sayı olmak tabii 512 ve / yol / scriptname.php) söz script tam yol olarak.

Bu excel dosyasının her satır için bu hatayı döndürür. Hat 27 ithal veriler işleniyor hangi ilk noktası olan bir işlev içinde sadece bir dönüş:

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

Sonunda bir ile patlarken "Ölümcül hata: tükenmiş 47185920 bayt İzin bellek boyutu hattında 133 üzerinde / yol / scriptname.php (71 bayt ayırmaya çalıştı)".

Apache hata günlüklerine yararlı bir şey yok. Ben stumped. Herkes en azından bakmak için herhangi bir fikirleri var mı? Benim komut dosyası veya yükseltme ile ilgili bir şey içinde bir şey olması muhtemeldir bile bilmeden yararlı olacaktır. Ben (yükseltmeden sonra) (çözüldü beri) dizini tmp seans yazamadı aynı sağlayıcısı farklı bir sitede başka bir sorun vardı, ama o değil (?) Eminim.

EDIT: cevabı çözümleyici PHP 5.2.6 ile bir şekilde uyumsuz olma sürümü ile ilgisi olduğu ortaya çıktı, ben söz çözümleyici [(0)] {olduğunu birine kullanım olabileceğini düşündüm }.

2 Cevap

Başlatılmamış dize offset:

... $data, bir dizi olmadığı anlamına gelir.

Teşekkürler girişi için, durum bana ben kullanıyordum ayrıştırma kütüphane daha yeni bir sürümünü bulma aracılığı ile 'kendini çözüldü' gelmiştir. Benim tahminim ben tam olarak ne olduğundan emin değilim ama sorunu, php sürümleri arasındaki fark ile ilgili bir şey idi. Sabit ama sinir bozucu.

EDIT: Ben en sorusunu kapanış çıkarları tamamen cevap Till kabul edeceğim. Girişi için tekrar THX.