【问题标题】:fwrite to txt-filefwrite 到 txt 文件
【发布时间】:2010-05-14 09:47:01
【问题描述】:

我目前正在尝试使用 PHP 写入 txt 文件,我发现了这个小脚本:

<?php
$filename = 'testFile.txt';
$somecontent = "Add this to the file\n";

if (is_writable($filename)) {

    if (!$handle = fopen($filename, 'a')) {
         echo "Cannot open file ($filename)";
         exit;
    }

    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Cannot write to file ($filename)";
        exit;
    }

    echo "Success, wrote ($somecontent) to file ($filename)";
    fclose($handle);

} 

else {
    echo "The file $filename is not writable";
}
?>

我收到一条成功消息,但文件中没有写入任何内容。即使我删除了 txt 文件,我仍然会收到成功消息

有人知道如何解决这种情况吗?

【问题讨论】:

  • 如果删除文件,看到成功信息后是否会重新创建?
  • 另外,尝试“echo fwrite($handle, $somecontent)”,它应该打印写入的字节数。
  • 成功消息后不会重新创建文件。当我 "echo fwrite($handle, $somecontent)" 我得到 21 个字节。

标签: php fwrite


【解决方案1】:

您的代码运行良好。但是请注意,如果文件尚不存在,is_writable 检查将失败。

如果您通过网络服务器执行它,请确保您没有查看缓存的响应。

【讨论】:

  • (只是想到响应被自己缓存了)
  • 我正在通过网络服务器执行脚本 - 很抱歉成为 n00b 但如何避免查看缓存的响应?
  • 发送阻止缓存的标头,或者,如果它只适合您,您可以使用 CTRL+F5 重新加载它
【解决方案2】:

您对is_writable 的第一次检查没有用,因为如果文件不存在,它会失败。 当您将fopen 与附加到文件的“a”参数一起使用时如果它存在,否则它将创建一个新文件。

如果您想检查文件是否存在,您可以使用 file_exists ( http://php.net/manual/en/function.file-exists.php ),但这不是必需的。

使用您的代码,如果您删除文件,您实际上应该得到一个“文件不可写”错误...您确定您有 完全该代码吗?

否则,我尝试了代码并且它工作正常(没有第一个if)。

【讨论】:

  • OP 的代码(包括is_writable 检查)来自 php.net 上的官方fwrite 示例:php.net/manual/en/function.fwrite.php。他们的代码不正确吗?
  • @amindfv:这在技术上并不正确,但它使用is_writable 来检查文件是否存在,这不是该函数应该使用的。如果文件不存在,is_writable 确实会失败,但这不是这里想要的行为。所以,是的,他们的代码“功能不正确”。
猜你喜欢
  • 1970-01-01
  • 2020-06-18
  • 2019-03-18
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-12
相关资源
最近更新 更多