PHP fwrite не может записать в текстовый файл - PullRequest
0 голосов
/ 17 октября 2018

Я использую 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);
?>

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

вам нужно передать объект файла в функцию

<?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);
?>
0 голосов
/ 17 октября 2018

В этом случае вы должны использовать ресурс дескриптора файла $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 , строка $ строка [, int $ length ])

При этом в таком случае пишется одна строка.

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

Немного проще в использовании.Но в любом случае эти 2 вещи, которые вам не нужно делать:

fclose($fp);
?>

Файл закрывается после завершения PHP, и конечный тег может вызвать больше проблем, чем он того стоит.Единственный раз, когда я использую fclose, это когда я открываю файл и читаю из него, а затем удаляю его с помощью unlink, вы не можете unlink его открыть, иначе я просто позволю PHP закрыть его.Конечный тег нужен только в том случае, если вы планируете следовать коду PHP с чем-то вроде HTML.Наличие пробела (например) после конечного тега может повредить загрузку файлов, поскольку любой выводимый контент будет включен в загрузку.Что еще хуже, если вы включили файл с пробелом (или другим материалом), может быть действительно трудно понять, почему вы не можете открыть ZIP-файл, который вы отправили для загрузки (например).

Ура и удачи.

...