【问题标题】:PHP fwrite doesn't update the file using the append modePHP fwrite 不使用附加模式更新文件
【发布时间】:2014-06-08 09:00:20
【问题描述】:

以下代码正在运行,但它不会更新它创建的文件的内容。

我可以看到文件内容已更改(大小增加),但是当我从服务器下载文件时,它是空的。 该文件是 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);

?>

有什么问题?

谢谢!

【问题讨论】:

  • 为什么header 重定向在第一行?尝试将其注释掉!

标签: php linux file fopen fwrite


【解决方案1】:

我认为一个好的做法是检查一个文件是否可以用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";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    相关资源
    最近更新 更多