2016-12-01 21 views
1

Может работать мой PHP файл штраф при проверке его через браузер, но выдает ошибку бесконечного цикла при запуске через CLI:fgetcsv метание ошибки при вызове из CLI

fgetcsv() ожидает параметр 1, чтобы быть ресурсом, логический данными по линии 30 (в то время как линия)

Код:

readCSV("feeds/data.csv"); 
function readCSV($csvFile) { 
    $count = 0; //for counting array objects 
    $storedQuotes = array(); 
    $handle = fopen($csvFile, 'r'); 
    //fgetcsv($file, 1000, ","); //remove first line 

    while (($line = fgetcsv($handle, 1000, ",")) !== FALSE) { 

     $quote = $line[2]; 
     $author = $line[1]; 

    //add element to $csv_arr with $quote and $author 
     $csv_arr[]=array(
         "quote" => $quote, 
         "author" => $author 
        ); 
} 

fclose($file); 
} 

Как я могу получить мою программу для запуска с помощью PHP CLI?

+0

Проверить путь к файлу csv и его существованию –

+0

Парсы в порядке через веб-страницу. Файл есть. – user1721449

+0

«Парсы в порядке через веб-страницу» не означает ничего. Промойте это из своего мозга и посмотрите на проблему. $ handle, скорее всего, «false», что указывает на ошибку. Файл не найден. Проблема разрешения. и т. д. Сосредоточьтесь на проблеме, и у вас есть шанс найти решение. – kainaw

ответ

3

Проверьте, действительно ли $handle является ресурсом (или является ложным). Например:

$handle = fopen($csvFile, 'r'); 
if(false !=== $handle) { 
    // do while{} here 
} 
else { 
    echo "Could not open $csvFile for reading"; 
} 

Кроме того, в CLI ваши пути к файлам различны. Поэтому вам нужно быть более явным. Самый простой способ сделать это, если $csvFile находится в относительном пути к сценарию, чтобы определить путь, такие как:

__DIR__ . "feeds/data.csv"

0

Похоже, что ваш PHP код не находит файл (т.к. fopen возвращает false).

Я думаю, вы должны использовать полный путь вместо относительного, так как вы запускаете его в cmd.

Вы должны установить свой путь, как следующее:

readcsv(dirname(__FILE__).'/feeds/data.csv'); 

Он должен работать, если «каналы» каталог находится в том же каталоге, что и файл PHP.

 Смежные вопросы

  • Нет связанных вопросов^_^