Notice that the behavior of fgets after a seek changed on PHP 8.0.10, if you seek to line 50 and run fgets, it will give you line 50, while on PHP 5.1~8.0.0 it would give you line 51:<?php$file = new SplTempFileObject();for ($i = 0; $i < 100; $i++) { $file->fwrite("Foo $i\n");}$file->seek(50);echo json_encode(array( array('line' => $file->key(), 'contents' => trim($file->fgets())), array('line' => $file->key(), 'contents' => trim($file->fgets())), array('line' => $file->key(), 'contents' => trim($file->fgets())),), JSON_PRETTY_PRINT);?>Results:PHP 8.0.1+[ { "line": 50, "contents": "Foo 50" }, { "line": 50, "contents": "Foo 51" }, { "line": 51, "contents": "Foo 52" }]PHP 5.1 to 8.0.0[ { "line": 50, "contents": "Foo 51" }, { "line": 51, "contents": "Foo 52" }, { "line": 52, "contents": "Foo 53" }]