【发布时间】:2019-10-11 07:57:43
【问题描述】:
就我对 c/c+ 模式的理解而言,我期待像 'a/a+ 模式这样的行为,因此不应截断文件,并且任何 fwrite() 结果都应添加到现有文件中。
事实上,文件似乎被截断了,因为文件总是只包含最后的 fwrite() 内容。
这可能是我的 PHP 版本 (7.0) 中的错误,还是我误解了什么?
<?php
$fp = fopen($fpath,'c+');
fwrite($fp, date("H:i:s")." test\n");
fclose($fp);
【问题讨论】:
-
它不会在打开文件时截断文件。但是是什么让您认为它会添加到文件中?即使没有指定(据我所知),
fwrite也可能会覆盖数据。有人在documentation for fwrite 中对此发表了评论。 -
不是您问题的真正答案,但如果您只想附加内容,您可以使用
file_put_contents($file, $content, FILE_APPEND);代替。更短更容易。 -
@fredrik 谢谢,这解释了一切!
-
@MagnusEriksson 这绝对是目前最好的解决方案。谢谢!
-
它可以带有标志
LOCK_EX。所以只需同时使用FILE_APPEND|LOCK_EX。