PHP - PHP注意:unserialize():函数中的偏移量出错

时间:2017-09-28 09:40:22

标签: 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 个答案:

答案 0 :(得分:1)

你正在阅读错误的块大小。

EOF似乎被添加到文件大小。 尝试使用file_get_contents()获取文件,这是读取文件数据的正确方法。

$previousData = file_get_contents($dataFileName);