PHP不会保存到文件

时间:2017-12-29 19:42:22

标签: php linux raspberry-pi apache2

我在Raspberry Pi 1 B +上安装了Apache 2和PHP(RASPBIAN STRETCH LITE )。我有一个运行在其上的网站,文本框和PHP脚本应该在用户提交时将文本框的内容保存到服务器上的文本文件中。 我基本上尝试了一切,但PHP脚本不会保存。 PHP确实获得了文本框内容(我测试了它 - 它工作正常)。

这是我的PHP:

<?php
include "code/multiPage/topBar.html";
$dir = "/data/searches.txt";
if ($_REQUEST) {
    $input = $_REQUEST["search"];
    file_put_contents($dir, $input, FILE_APPEND);
}
?>
除了这个问题,PHP才能正常工作。

该文件夹具有每个人的读写权限。 我还尝试让PHP创建自己的文件夹,代码类似于:

if (!file_exists('path/to/directory')) {
    mkdir('path/to/directory', 0777, true);
}

PHP甚至不能这样做。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

首先,请与其他代码分开试用

<?php

file_put_contents(&#34; /data/searches.txt",&#34; bla&#34;,FILE_APPEND);

?>

如果它无效则尝试获取上一个错误

echo print_r( error_get_last (  ), true)

为了确保您可以写入文件,您可以随时检查它是否可写

if(is_writable($dir))

另外,为了调试它,很高兴看到file_put_contents写了多少叮咬

所以易于调试的最终代码将是这样的:

<?php
include "code/multiPage/topBar.html";
$dir = "/data/searches.txt";
if(!is_writable($dir)){
    echo "cannot write to file";
}

if (!empty($_REQUEST["search"])) {
    $input = $_REQUEST["search"];
    $bitecount = file_put_contents($dir, $input, FILE_APPEND);
}
echo $bitecount . " bites were written to the file";
?>

有一件事。如果$ _REQUEST [&#34; search&#34;] =&#34;&#34;或$ _REQUEST [&#34; search&#34;] = null if($ _ REQUEST)无论如何都是TRUE

答案 1 :(得分:0)

我明白了。问题是网络服务器没有写入目录的权限。运行sudo chown -R www-data var/www/html/data感谢您的帮助解决了问题!祝你有愉快的一天:D