fclose() ожидает, что параметр 1 будет ресурсом, массивом, заданным в eval()

Я получаю эту ошибку fclose() ожидает, что параметр 1 будет ресурсом, массив, указанный в eval(), $file не является ресурсом?

<?php $file = fgetcsv(fopen("https://www.example.com/tock.txt","r")); ?>
<div class="stocks-status"><div><div class="stocks-title">Books</div><div class="stockbook">

<?php echo $file[0]; ?></div></div><div><div class="stockbook">

<?php echo $file[1]; ?></div><div class="book-date"><span>

<?php echo $file[2]; ?></span> | <span>
<?php echo preg_replace('/(\d+)/', '${1} ', strtoupper($file[3])); ?> VIN</span></div></div></div><p>&nbsp;</p>
<?php fclose($file); ?>

person acctman    schedule 31.10.2017    source источник
comment
Вы не назначаете указатель файла переменной, поэтому не можете его закрыть.   -  person aynber    schedule 31.10.2017
comment
$file - это не ресурс, это массив, возвращаемый fgetcsv()   -  person Patrick Q    schedule 31.10.2017


Ответы (1)


fclose() ожидает дескриптор файла, вы передаете содержимое файла. Вы хотите что-то вроде этого:

$handle = fopen("https://www.example.com/tock.txt", "r");
$csv = fgetcsv($handle);
fclose($handle);

Примечание:

  • Обычно вам не нужно вызывать fclose(), так как он неявно срабатывает в конце скрипта.
  • Вам нужно будет вызвать fgetcsv() более одного раза, если файл содержит более одной строки.

Кроме того, по возможности следует избегать использования eval(). Обычно это вызывает серьезные проблемы с безопасностью.

person Alex Howansky    schedule 31.10.2017