PHP文件写入 - 每次都出现错误消息

时间:2017-09-21 17:04:41

标签: php file writing

所以这是我的代码一直在点击我的错误信息,摆弄权限但没有运气,有什么想法吗?

<?php
//create variables
$first_name = (int) $_POST['first_name'];
$last_name = (int) $_POST['last_name'];
$document_root = $_SERVER['/var/www'];
$date = date('H:i, jS F Y');
?>
<DOCTYPE html>
<html>
<head>
    <title>We get the message...</title>
</head>
<body>
    <h1>We get the message . . .</h1>
    <?php
        $output_string = $date."\t".$first_name.$last_name."   \t".$message."\n";
        @$fp = fopen("$document_root-messages.txt", 'w+');
        if (!$fp) {
            echo "<p>apologies</p>";
            exit;
        }
        flock($fp, LOCK_EX);
        fwrite($fp, $output_string, strlen($output_string));
        flock($fp, LOCK_UN);
        fflush($fp);
        fclose($fp);

        echo "<p>message written.</p>";
    ?>
</body>
</html>

我刚刚开始学习PHP,所以它可能非常简单,但我现在已经摸不着头脑了一个小时,仍然没有找到解决方案。

1 个答案:

答案 0 :(得分:0)

@$fp = fopen("$document_root-messages.txt", 'w+');

你实际上并没有做出一条道路,没有这样的文件:

/var/www-messages.txt

现在这是一条真正的道路:

@$fp = fopen("$document_root/messages.txt", 'w+');

假设/ var / www中的文件是message.txt。

,我假设你的意思

关于使/ var / www可写的不良做法的评论也是正确的,在学习开始使用好的做法时最好,因为如果你从坏的开始,你只需要忘记它们,还有更多的工作。

避免这种情况的方法就是习惯于更清楚,如下:

$file_path = $document_root . '/messages.txt';
echo $file_path . '<br>';
@$fp = fopen($file_path, 'w+');

然后你在它工作后摆脱回声,回声也是很好的建议。如果你习惯于把所有动作塞进某些东西中,那么调试起来非常困难,如果你在fopen之外构造你的字符串,那么你可以通过回应它调试路径,而你不会搞得一团糟。注意那是多么清楚,调试有多容易?