【问题标题】:PHP doesn't save to filesPHP不保存到文件
【发布时间】:2017-12-29 19:42:22
【问题描述】:

我在 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


    【解决方案1】:

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

    【讨论】:

    • 花了一个小时弄清楚为什么上传的文件没有被保存,直到我发现这个!感谢您回答您的解决方案!
    【解决方案2】:

    首先将其与其他代码分开尝试

    <?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

    【讨论】:

    • 谢谢!我会试一试。 :D
    • 试过了 - 将 PHP 放在另一个文件中,检查路径.. 它无法写入该位置 - 保存了 0 个字节。我不知道如何解决这个问题。
    猜你喜欢
    • 2013-08-23
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 2018-07-13
    • 2020-06-30
    • 2016-03-11
    • 2018-01-07
    相关资源
    最近更新 更多