【问题标题】:PHP fwrite can not write to a txt filePHP fwrite 无法写入 txt 文件
【发布时间】:2018-10-17 13:11:54
【问题描述】:

我正在使用 CentOS7。我的 index.html、action.php 和 file.txt 都在同一个文件夹中。我已经将 chown apache:apache 设置为整个 /var/www/html 树。该文件确实打开了,但我无法向其写入任何内容。这是我的第一个 PHP 代码,所以如果我是愚蠢的,请告诉我。 var_dump($_POST);工作正常。

<?php
$name = $_POST['fname'];
$fp = fopen("file.txt","w") or die("Can not open file");
fwrite("file.txt",$name) or die ("can not write to file");
fclose($fp);
?>

【问题讨论】:

    标签: php centos centos7 fwrite


    【解决方案1】:

    在这种情况下,您必须使用文件句柄资源$fp,而不是名称。

    所以这个:

    $name = $_POST['fname'];
    $fp = fopen("file.txt","w") or die("Can not open file");
    fwrite("file.txt",$name) or die ("can not write to file");
    

    应该是:

    //if(!empty($_POST['fname'])){ ..you should really check this
    $name = $_POST['fname'];
    $fp = fopen("file.txt","w") or die("Can not open file");
    fwrite($fp,$name) or die ("can not write to file");
    

    供参考:

    http://php.net/manual/en/function.fwrite.php

    int fwrite( 资源 $handle, 字符串 $string [, int $length ] )

    在这种情况下,写一行。

    if(!file_put_contents("file.txt", $name)) die ("can not write to file");
    

    使用起来更容易一些。但无论如何,这两件事你都不需要做:

    fclose($fp);
    ?>
    

    PHP 完成后文件被关闭,而结束标签实际上会导致更多问题,这是值得的。我唯一一次使用fclose 是,如果我打开一个文件并从中读取,然后用unlink 将其删除,那么如果它打开,你就不能unlink,否则我只是让PHP 关闭它。仅当您计划使用 HTML 之类的 PHP 代码时才需要结束标记。在结束标记后留有空格(例如)可能会损坏文件下载,因为输出的任何内容都将包含在下载中。更糟糕的是,如果您包含的文件有空间(或其他内容),则可能很难找出您无法打开作为下载文件发送的 zip 文件的原因(例如)。

    干杯,祝你好运。

    【讨论】:

    • 非常感谢。这解决了问题。我知道我在做一些愚蠢的事情。
    • 没关系,发生在我们最好的人身上。
    【解决方案2】:

    你需要将文件对象传递给函数

    <?php
    $name = $_POST['fname'];
    $fp = fopen("file.txt","w") or die("Can not open file");
    fwrite($fp,$name) or die ("can not write to file");
    fclose($fp);
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      相关资源
      最近更新 更多