所以这是我的代码一直在点击我的错误信息,摆弄权限但没有运气,有什么想法吗?
<?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,所以它可能非常简单,但我现在已经摸不着头脑了一个小时,仍然没有找到解决方案。
答案 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之外构造你的字符串,那么你可以通过回应它调试路径,而你不会搞得一团糟。注意那是多么清楚,调试有多容易?