带有 r+ 的 fopen() 就像一个?

fopen() with r+ acts like a?

这是我见过的最奇怪的东西。

$filename = "/etc/httpd/conf/httpd.conf";
$handle = fopen($filename, "r+");
$size = filesize($filename);
$contents = fread($handle, $size);
fwrite($handle,$contents);
fclose($handle);

这不是应该读取文件的内容然后再写入吗?基本上不修改文件?此时这段代码的作用与 append 完全相同,它复制了文件的内容,在文件末尾添加了 $contents,我不知道为什么。我尝试在写入之前稍微更改一下字符串,这就是我发现它写入末尾而不是开头的原因。

您的 fread() 正在推进文件指针,以便在您调用 fwrite 时,您的文件指针位于末尾并且您的写入从那里追加到文件。

如果你想在文件全部读完后从头开始写,那么:

rewind($handle);