PHPでファイルに書き込もうとしていますが、これは私が使用しているコードです(この回答から前の質問への引用):
$fp = fopen("counter.txt", "r+");
while(!flock($fp, LOCK_EX)) { // acquire an exclusive lock
// waiting to lock the file
}
$counter = intval(fread($fp, filesize("counter.txt")));
$counter++;
ftruncate($fp, 0); // truncate file
fwrite($fp, $counter); // set your data
fflush($fp); // flush output before releasing the lock
flock($fp, LOCK_UN); // release the lock
fclose($fp);
読み取り部分は正常に機能します。ファイルが読み取られた場合、そのコンテンツは適切に読み取られます。つまり、ファイルに が含まれている場合2289
は2289
読み取られます。
問題は、値をインクリメントしてそのファイルに書き換えると、[NUL][NUL][NUL][NUL][NUL][NUL][NUL][NUL]1
書き込まれることです。
私は何が欠けていますか?null 文字が書き込まれるのはなぜですか?