PHP fwrite不使用追加模式更新文件


PHP fwrite doesn't update the file using the append mode

下面的代码正在工作,但是它没有更新它所创建的文件的内容。

我可以看到文件内容已经改变(大小增加),但当我从服务器下载文件时,它是空的。将文件chmod到666及其父目录。

是一个运行Apache和PHP的linux服务器。我也试过使用fflush来强制它冲洗内容。

<?php
header("Location: http://www.example.com");
$handle = fopen("log.txt", "a");
foreach($_POST as $variable => $value) {
   fwrite($handle, $variable);
   fwrite($handle, '=');
   fwrite($handle, $value);
   fwrite($handle, ''r'n');
}
fwrite($handle, ''r'n');
fflush($handle);
fclose($handle);
?>

有什么问题吗?

谢谢!

我认为一个好的做法是检查一个文件是否可以用is_writable写,然后如果它可以通过检查fopen返回的值来打开,顺便说一下你的代码是正确的。

试试这个:

$filename = "log.txt";
$mode = "a";
// Let's make sure the file exists and is writable first.
if (is_writable($filename)) {
    // In our example we're opening $filename in append mode.
    // The file pointer is at the bottom of the file hence
    // that's where $somecontent will go when we fwrite() it.
    if (!$handle = fopen($filename, $mode)) {
         echo "Cannot open file ($filename)";
         exit;
    }
    foreach($_POST as $variable => $value) {
       fwrite($handle, $variable);
       fwrite($handle, '=');
       fwrite($handle, $value);
       fwrite($handle, ''r'n');
    }
    fwrite($handle, ''r'n');
    fflush($handle);
    fclose($handle);
    echo "Content written to file ($filename)";
} else {
    echo "The file $filename is not writable";
}