为什么file_put_contents写的文本文件会写双行?

时间:2013-10-24 13:41:43

标签: php

早上好,朋友们。我一直在努力和谷歌搜索,我似乎无法找到答案。如果它已经在这里得到解答而且我错过了,请随时指引我错过。

我有以下一些PHP代码。当我在我的Mac(以及一些朋友的非Windows机器)上运行它时它工作正常,但是当我在Windows上运行它(它将在这里工作时),它会将每行写入文本文件两次。这里的PHP工作是在IIS 6上运行的5.3.6。

非常感谢任何帮助。

<?php

$fltSupervision = trim(htmlentities($_POST["txtSupervision"]));
$fltDrugTestUA = trim(htmlentities($_POST["txtDrugTestUA"]));
$fltAlcoholSensor = trim(htmlentities($_POST["txtAlcoholSensor"]));
$fltTotal = trim(htmlentities($_POST["txtTotal"]));
$fltSurcharge = trim(htmlentities($_POST["txtSurcharge"]));

$strTransaction = $fltSupervision . "\t" . $fltDrugTestUA . "\t" . $fltAlcoholSensor . "\t" . $fltSurcharge . "\t" . $fltTotal . PHP_EOL;
echo $strTransaction;

$file = 'fees.txt';
file_put_contents($file, $strTransaction, FILE_APPEND);

?>

杰里米

5 个答案:

答案 0 :(得分:1)

这可能与缺少的favicon.ico有关。

尝试将.htaccess更改为:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [NC,L]

尝试创建一个favicon.ico文件,方法是创建一个空的.txt文件,将其重命名为favicon.ico。

许多浏览器都会查找favicon.ico文件,如果该文件不存在且您的.htaccess文件设置为指向您的脚本,则脚本将执行两次,文本将被添加两次到fee.txt

答案 1 :(得分:0)

这只有在您刷新页面时才有可能。您当前的代码会将您的内容附加到fees.txt文件中。

答案 2 :(得分:0)

看起来PHP_EOL可能会抛出你的文本编辑器。如果PHP_EOL定义为&#34; \ r \ n&#34;这可能会在文本文件中的行之间产生空格。

尝试将自己的行尾字符设置为&#34; \ n&#34;并查看是否可以解决此问题。

$strTransaction = $fltSupervision . "\t" . $fltDrugTestUA . "\t" . $fltAlcoholSensor . "\t" . $fltSurcharge . "\t" . $fltTotal . "\n";

答案 3 :(得分:0)

我在我的服务器上测试了你的代码并检查了它。可能还有其他原因导致这种情况(如果是这种情况),也许是您的表单本身。如果你重新加载页面两次,那么它会保存两次,因为FILE_APPEND

你可能偶然两次点击提交按钮吗?只是检查可能性。如果您不想附加,请取出, FILE_APPEND

答案 4 :(得分:0)

答案最终变得非常奇怪。经过大量测试后,我发现只有当我在工作时使用Windows机器从Windows服务器加载脚本时才会发生这种情况。如果客户端计算机不在我们的公司网络上,则其行为符合预期。由于奇怪的网络行为可能远远超出了原始帖子的范围,让我们把它作为答案。当我遵循Casper的建议并从我的Windows服务器上的命令行运行脚本时,我开始理解这一点。

谢谢大家给我的想法并帮助我学习更多知识。祝你有美好的一天。