2017-09-28 10 views
1

のオフセットでのエラーは、私は、次のPHP機能を持っている:PHP - PHPのお知らせ:アンシリアライズ():機能

function readDataFile_array($dataFileName) { 
    if (file_exists($dataFileName)) { 
     $readFile = fopen($dataFileName, 'r'); 
     $previousData = fread($readFile, filesize($dataFileName)); 
     fclose($readFile); 
     $previousData = unserialize($previousData); 
    } else { 
     $previousData = null; 
    } 
    return $previousData; 
} 

私は次のエラーを取得しています:PHP Notice: unserialize(): Error at offset 416687 of 416690 bytes

データはによって読み取られますこの関数は、以下のものを使用して保存されている:

function writeDataFile_array($dataFileName, $insertData) { 
    $insertData = serialize($insertData); 
    $writeFile = fopen($dataFileName, 'w') or die('Unable to open file!'); 
    fwrite($writeFile, $insertData); 
    fclose($writeFile); 
} 

私はなぜ私が$previousData = unserialize($previousData);

を参照するエラーを取得していますかわかりません
+1

スラッシュなどはありませんか? – delboy1978uk

+0

いいえ、保存されているデータは配列 – JoeyBall

+0

ですが、文字列にシリアル化すると、私は魔法の引用符を言うことになりました。 – delboy1978uk

答えて

1

あなたは、間違ったチャンクサイズを読んでいます。

ファイルサイズにEOFが追加されているようです。 ファイルデータを読み取る適切な方法であるfile_get_contents()を使用してファイルを取得してください。

$previousData = file_get_contents($dataFileName); 
+1

ありがとうございます。私はそれを解決した。 – JoeyBall

関連する問題