file_put_contents覆盖数据而不是附加数据

时间:2014-02-03 18:08:37

标签: php

我一直在尝试编写一个简单的PHP脚本,它添加两个数字并将结果附加到文本文件中。这是代码

<!DOCTYPE html>
<html>
<head>

<link rel="stylesheet" type="text/css" href="style.css">
<title>RESULT PAGE</title>  
</head>
<body>
<h4>Number 1 is <?php echo $_POST['num1']; ?></h4>
<h4>Number 2 is <?php echo $_POST['num2']; ?></h4>
<h3>The result of adding above numbers is <?php
$num1=$_POST['num1'];
$num2=$_POST['num2'];
    $result=$num1 + $num2;
file_put_contents("test.txt",$result,FILE_APPEND);
echo $result;
?></h3>
</body>
</html>

每当执行脚本时,都会替换先前的数据,而不是将数据添加到新行。 我目前正在使用UBUNTU 12.04 LTS。

3 个答案:

答案 0 :(得分:0)

我非常怀疑.. FILE_APPEND 的目的是将数据附加到文件而不是覆盖它。

嗯,它对我来说很好。尝试与 LOCK_EX

结合使用
file_put_contents("test.txt",$result,FILE_APPEND|LOCK_EX);

答案 1 :(得分:0)

要将值附加为换行符,您需要在写入文件时发送两个转义的换行符参数,如下所示:

file_put_contents("test.txt",$result . "\n\n",FILE_APPEND);

否则它们将被写入同一行(文件的最后一行)。

如果这没有帮助,请确保检查文件权限以确保apache(或您的任何网络服务器组)具有写入权限。

答案 2 :(得分:-1)

或者你可以尝试这个,     

$fp = fopen('somefile.txt', 'w');
fseek($fp, SEEK_END);//places pointer to the end.
fwrite($fp, $results);

&GT;