PHP File Write — сообщение об ошибке каждый раз

Итак, вот мой код продолжает нажимать на мое сообщение об ошибке, возился с разрешениями, но не повезло, есть идеи?

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

Решение

@$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, то вы можете отладить путь, повторив его, и вы не запутаетесь. Заметьте, насколько это понятно и как легко отлаживать?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]