Php fwrite / fclose предупреждение

У меня есть следующий фрагмент кода, который работает, кстати:

  $txt = "<?php include 'work/uploads/".$php_id.".html';?>";
$slot = file_put_contents('../offer/slots.php', $txt.PHP_EOL , FILE_APPEND);
fwrite($slot, $txt);
fclose($slot);
$theCounterFile = "../offer/count.txt";
$oc = file_put_contents($theCounterFile, file_get_contents($theCounterFile)+1);
fwrite($oc);
fclose($oc);

Но при его запуске регистрируются следующие предупреждения:

Line 81 : fwrite() expects parameter 1 to be resource, integer given
Line 82 : fclose() expects parameter 1 to be resource, integer given
Line 85 : fwrite() expects at least 2 parameters, 1 given
Line 86 : fclose() expects parameter 1 to be resource, integer given

Вероятно, моя логика здесь не так. Может быть, кто-то может пролить свет здесь?

-2

Решение

Вам не нужно fwrite() или же fclose() вообще когда вы используете file_put_contents(), От документы для file_put_contents():

Эта функция идентична вызову fopen(), fwrite() а также fclose() последовательно записывать данные в файл.

Ваш код должен выглядеть так:

$file = fopen("../offer/work/uploads/".$php_id.".html","w");
fwrite($file,$data); // Note: you could use file_put_contents here, too...
fclose($file);
$txt = "<?php include 'work/uploads/".$php_id.".html';?>";
$slot = file_put_contents('../offer/slots.php', $txt.PHP_EOL , FILE_APPEND);
$theCounterFile = "../offer/count.txt";
$oc = file_put_contents($theCounterFile, file_get_contents($theCounterFile)+1);

Что касается того, почему вы получаете ошибки с вашим текущим кодом: fwrite() а также fclose() ожидать, что первый параметр будет ресурсом (тип возвращаемого значения, которое вы получаете от fopen()). Но вы передаете им значение, возвращаемое file_put_contents(), которое является целым числом. Итак, вы получаете ошибку.

1

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

file_put_contents обрабатывает операции открытия, записи и закрытия всего за один раз — звонить не нужно fwrite а также fclose после этого. (Не только не нужно — это даже не имеет никакого смысла, потому что с file_put_contents у вас даже нет дескриптора файла для начала.)

file_put_contents возвращает количество записанных байтов, целочисленное значение, и именно поэтому вы получаете эти предупреждения.

1

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