PHP不保存到文件

问题描述 投票:0回答:2

我在Raspberry Pi 1 B +(RASPBIAN STRETCH LITE)上安装了Apache 2和PHP。我有一个运行在其上的网站,文本框和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甚至不能这样做。

在此先感谢您的帮助!

php linux raspberry-pi apache2
2个回答
0
投票

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

<?php

file_put_contents(“/ data / searches.txt”,“bla”,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 [“search”] =“”或$ _REQUEST [“search”] = null,if($ _ REQUEST)无论如何都将为TRUE


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.