Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php fopen fread和fwrite故障_Php_Fwrite_Fread - Fatal编程技术网

Php fopen fread和fwrite故障

Php fopen fread和fwrite故障,php,fwrite,fread,Php,Fwrite,Fread,我正在尝试让用户在文本框中写入一些内容。然后将文本写入名为“list.txt”的文件中的新行。然后我希望整个文件都能在网站上阅读。那样的话,就像是聊天室之类的。问题是,现在它告诉我“无法打开文件”。我已经检查了文件的权限,并且每种类型的用户都有完全的访问权限。List.txt也与php文件位于同一目录中。而且,当它能够打开文件时,它不会将其写入新行。我知道这可以使用“\n”或PHP.EOL来完成,但它们似乎都不起作用,有时它们会阻止站点自行运行。请帮我弄清楚发生了什么事,谢谢 <html&

我正在尝试让用户在文本框中写入一些内容。然后将文本写入名为“list.txt”的文件中的新行。然后我希望整个文件都能在网站上阅读。那样的话,就像是聊天室之类的。问题是,现在它告诉我“无法打开文件”。我已经检查了文件的权限,并且每种类型的用户都有完全的访问权限。List.txt也与php文件位于同一目录中。而且,当它能够打开文件时,它不会将其写入新行。我知道这可以使用“\n”或PHP.EOL来完成,但它们似乎都不起作用,有时它们会阻止站点自行运行。请帮我弄清楚发生了什么事,谢谢

<html>

<p>
<form name="form1" method="post" action="test.php">
<input name="text" type="text">
<input type="submit" value="send" method="post">
</p>

<p>
<?php


$file = fopen("list.txt") or die ("Unable to open file!");
$text = $_POST['text'];//where the hell do you put the new line indicator: "\n"//

fwrite($file, $text) or die ("Cannot write!");


$print = fread($file,filesize("list.txt", "a+"));
fclose($file);
echo $print;


?>


</p>


<?php //figure out how to make this a button that clears the file
/*
$fp = fopen("list.txt", "r+");
// clear content to 0 bits
ftruncate($fp, 0);
//close file
fclose($fp);*/
?>


</html>



您遇到的问题是,在php编写内容时,您的文件将被锁定


如果你想同时写,那么你有很短的时间不能访问你的文件。这是基于文件的解决方案的大问题。数据库引擎就是为此而设计的。

使用
文件内容

   $file = 'list.txt';
    $content =  $_POST['text']."\n";
    // Write the contents to the file, 
    // using the FILE_APPEND flag to append the content to the end of the file
    file_put_contents($file, $content, FILE_APPEND);
根据文件

此函数与调用fopen()、fwrite()和fclose()相同 连续地将数据写入文件

如果文件名不存在,则创建该文件。否则 除非设置了文件附加标志,否则将覆盖现有文件


为什么不使用file\u put\u contents?就像在
filesize()函数中使用访问修饰符一样。你只需要一个参数,文件名,这非常有用。谢谢我仍然有一个问题,因为我使用$u POST作为内容,我如何确保它写入新的行?这就是我一直在尝试的。似乎它仍然写在同一行上。无论是在文件中还是在网站上,当它被读回时,我认为它在每个字符串之间添加了一个空格,但不是一个不可能的换行符…我运行了这段代码并进行了测试。。每次调用php文件时,它都会添加一行新行。。。你的问题是什么发生了什么: