У меня есть следующий фрагмент кода, который работает, кстати:
$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
Вероятно, моя логика здесь не так. Может быть, кто-то может пролить свет здесь?
Вам не нужно 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()
, которое является целым числом. Итак, вы получаете ошибку.
file_put_contents
обрабатывает операции открытия, записи и закрытия всего за один раз — звонить не нужно fwrite
а также fclose
после этого. (Не только не нужно — это даже не имеет никакого смысла, потому что с file_put_contents
у вас даже нет дескриптора файла для начала.)
file_put_contents
возвращает количество записанных байтов, целочисленное значение, и именно поэтому вы получаете эти предупреждения.