【问题标题】:Unable to append data into my file using fwrite in PHP无法在 PHP 中使用 fwrite 将数据附加到我的文件中
【发布时间】:2016-02-17 15:50:30
【问题描述】:

这是我的代码

<!DOCTYPE html>
<html>
    <body> 
<?php
    $v=fopen("exc.csv", "a")or die("Unable to open file!");
    fwrite($v,"appended txt\r\n");
    fclose($v);
?>  
    </body>
</html>

它运行良好,但每当我尝试在我的计算机中打开 exc.csv 文件时运行此代码时,我都会收到此错误:

警告:fopen(exc.csv) [function.fopen]:无法打开流:权限被拒绝。

我已经尝试使用 chmod() 并将权限设置为 0777,但仍然无法正常工作。有什么方法可以在文件物理打开时写入文件?如果不是,请告诉我原因。

【问题讨论】:

  • 某些操作系统会阻止修改正在使用的文件。您使用哪种操作系统?
  • 您确定 exc.csv 没有同时在其他编辑器中打开?
  • 是的@SergeyVidusov,这就是问题所在。有没有办法在该文件已经在 windows excel 中打开时使用 php 写入该文件?
  • 是的。关闭 Excel :) 没有别的办法。
  • 你应该尝试使用file_put_contents file_put_contents("exc.csv","appended text", FILE_APPEND);

标签: php


【解决方案1】:

据我所知,这是不可能的——或者至少在 Windows 上是不可能的。问题是该文件已被另一个进程锁定。一旦您在编辑器中打开文件进行编辑,它对所有其他进程都是只读的。原因是为了防止两个进程在修改同一个文件时发生冲突。

【讨论】:

  • 是的,就像在 php 中一样,如果你打开一个文件,你会传递一个用于读取或写入或两者的标志。如果处于写入状态,则将其锁定,以便其他任何内容都不能同时写入
  • 有道理。我想我只会提示用户在附加数据或其他内容之前先关闭文件。感谢您清除它
  • @Vance,不客气。如果对您有帮助,请将答案标记为正确。谢谢。
  • 这在很大程度上取决于应用程序。刚刚用 OpenOffice Writer 打开了一个文件,php 仍然可以写入该文件。 UltraEdit 文本编辑器也是如此。
  • 是的,Notepad++ 也不会阻止文件,但 Excel 显然会打开读/写文件句柄并为自己保留。
猜你喜欢
  • 1970-01-01
  • 2011-12-15
  • 2021-07-25
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多