fwrite不写但只删除文件内容

时间:2015-07-09 12:00:46

标签: php fopen fwrite truncate

大家好! 我在这里检查了10个以上类似的问题但他们没有帮助。 我有一个小脚本,它应该从$ _GET []中写入一些值的内容并将其写入文件。 该脚本工作了一个月,但意外停止了。 现在它只截断文件。

文件对于apache用户是可写的:     -rwxrwxrwx 1 apache root0Июл907:39 ipnt

$newips2=trim($_GET['newips2']);
if ($newips2) {
echo ('debug: #newips2:'.$newips2.'<br>');
if ($handle2=fopen('ipnt','w')) { 
        fwrite($handle2,$newips2);
        fclose($handle2);
        echo ("updated<br>");
} else {
        echo ("file isn't open for writing<br>");
}
}

我看到$ newips2不为空并且在输出中看到“已更新”,因此如果语句解析为true。  我甚至尝试过使用

fflush($handle2)

ftruncate($handle2,ftell($handle2));

并尝试将'b'添加到fopen模式。

我在.htaccess中启用了错误报告:

php_value error_reporting E_ALL 
php_value display_errors On
php_value display_startup_errors On

但仍然没有显示错误。没有运气。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

在阅读文档http://php.net/manual/fr/function.fopen.php之后,如果您添加新行文件末尾,则需要使用。

$newips2=trim($_GET['newips2']);
if ($newips2) {
    echo ('debug: #newips2:'.$newips2.'<br>');

    if ($handle2=fopen('ipnt','a')) { 
        fwrite($handle2,$newips2 . "\n");
        fclose($handle2);
        echo ("updated<br>");
    } else {
        echo ("file isn't open for writing<br>");
    }
}

答案 1 :(得分:0)

这是非常愚蠢的原因:没有磁盘空间。 主持人,您可以删除整个问题。