PHP Fopen中的“ a”和“ w”标志之间的区别

时间:2019-02-20 12:20:17

标签: php

我正在尝试在php中创建文件。该目录存在,但文件不存在。

我尝试将fopen与'r'标志一起使用,但会引发错误。

failed to open stream: No such file or directory

我检查了文件权限。 我改用了'a'标志,它起作用了。

$file = fopen('output/readme.txt', 'a');
fwrite($file, 'some text to input');
fclose($file);

php manual中,'w'和'a'标志似乎都做同样的事情。

  • 打开文件以仅写
  • 创建文件(如果不存在)

两个标志之间是否有区别?可能是什么原因导致错误?

编辑:我再试一次,这一次'w'和'a'标志都起作用而没有引发任何错误。我可能在不知不觉中使用了错误的标志。但是,感谢您澄清文件指针。我显然忽略了这种差异。

1 个答案:

答案 0 :(得分:7)

仔细阅读手册:

  

'w'仅开放用于写作;将文件指针放在文件的开头,然后截断文件到零长度。如果该文件不存在,请尝试创建它。

     

'a'仅用于写作;将文件指针放在文件的末尾。如果该文件不存在,请尝试创建它。

所以基本上 w 会清空文件,而 a 会附加到文件中。