fseek($file, SEEK_END) + fwrite() 写入文件开头而不是结尾

fseek($file, SEEK_END) + fwrite() writing to beginning of file instead of end

我正在尝试将字符串附加到包含 json 字符串的文件。 为此,我必须删除最后一个括号“]”,并将新字符串追加到文件末尾。 这就是我尝试这样做的方式:

$fh = fopen($target_file, 'r+') or die("can't open file");  // opens file
$stat = fstat($fh);                                         // get data from statt struct
ftruncate($fh, $stat['size']-1);                            // remove last char
fseek($fh, SEEK_END);                                       // move file pointer to end
fwrite($fh, $append_str);                                   // write new string
fclose($fh);                                                // close

但是,$append_str 被写入文件的开头。 append 操作应该有什么不同? (p.s.: 使用 wamp 服务器)

只需使用 a+,它会将文件指针设置在文件末尾。

我看到第二个参数被省略了,这不是 fseek 的工作方式。

要将文件指针设置到文件末尾,您还需要设置偏移量参数:

fseek($fh, 0, SEEK_END);