2016-11-30 5 views
0

У меня проблема с PHP-скриптом, который создает некоторый файл csv. PHP-скрипт выглядит следующим образом:fclose() ожидает, что параметр 1 будет ресурсом

<?php 

    $inputFile = "/var/www/vhosts/pecso.it/httpdocs/test/export30gg.txt"; 

    $csvData = file_get_contents($inputFile); 

    $rows = explode(PHP_EOL, $csvData); 

    $rowsArray = array(); 
    foreach ($rows as $row) { 
     $rowsArray[] = str_getcsv($row); 
    } 

    $csvFileName = "/var/www/vhosts/pecso.it/httpdocs/graphs/export30gg.csv"; 

    if (file_exists($csvFileName)){ 
     unlink($csvFileName); 
    } 

    $csvFile = fopen($csvFileName, "w"); 
    $csvFileForGraph = fopen($csvFileNameForGraph, "w");  

    for ($i = 0; $i < count($rowsArray); $i++) { 
     $dateTime = DateTime::createFromFormat('d/m/Y', $rowsArray[$i][0]); 
     $d = $dateTime->format('Y-m-d'); 
     $rowsArray[$i][0] = $d; 
     $rowForGraph = $rowsArray[$i]; 
     unset($rowForGraph[1]); 
     $row = implode(',',$rowsArray[$i]); 
     $rowForGraph = implode(',',$rowForGraph); 
     file_put_contents($csvFileName, $row.PHP_EOL , FILE_APPEND); 
    } 

    fclose($csvFileName); 
?> 

Этот скрипт работает правильно и CSV-файл export30gg.csv создан правильно, но каждый раз, когда я запускаю этот сценарий, я имею следующую ошибку:

fclose() expects parameter 1 to be resource 

Можете ли вы мне помочь, пожалуйста?

+1

Ресурс '$ csvFile'. '$ csvFileName' является __string__ –

ответ

1

Это должно быть как

fclose($csvFile); 

потому, что вы сохранили регресс ссылку в $ csvFile, а не в $ csvFileName

1

flose() принимает параметр как указатель файла ресурс, который будет найден во время выполнения кода, например, в вашем случае это $csvFile = fopen($csvFileName, "w"); Таким образом, это должно быть

fclose($csvFile); 

и не fclose ($ csvFil ENAME);