PHP fwrite无法写入txt文件

时间:2018-10-17 04:43:30

标签: php centos centos7 fwrite

我正在使用CentOS7。我的index.html,action.php和file.txt都在同一文件夹中。我已经将let printf = Format.printf let rec poll_keys () = let open Sdlevent in if has_event () then begin match wait_event () with | KEYDOWN {keysym=key} -> printf "keydown '%c'@." (Sdlkey.char_of_key key) | KEYUP {keysym=key} -> printf "keyup '%c'@." (Sdlkey.char_of_key key) | _ -> Sdltimer.delay 5 end; poll_keys () let () = Sdl.init [`VIDEO]; (* Sdlkey.enable_key_repeat (); *) poll_keys () 设置为整个/ var / www / html树。该文件确实打开,但是我无法对其进行任何写入。这是我有史以来的第一个PHP代码,所以请让我知道我是不是很蠢。 var_dump($ _ POST);也可以正常工作。

chown apache:apache

2 个答案:

答案 0 :(得分:2)

在这种情况下,您必须使用文件句柄资源$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关闭它。仅当您计划在PHP代码后加上HTML之类的内容时,才需要使用end标签。例如,在结束标记后留有空格可能会损坏文件下载,因为任何输出的内容都将包含在下载中。更糟糕的是,如果包含的文件具有空格(或其他填充物),那么很难找出为什么无法打开作为下载文件发送的zip文件的原因。

干杯,祝你好运。

答案 1 :(得分:0)

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

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