user1721449 user1721449 - 6 months ago 33
PHP Question

fgetcsv throwing error when calling from CLI

Can run my php file fine when checking it via browser, but throws an infinite loop error when run via CLI:

fgetcsv() expects parameter 1 to be resource, boolean given on line 30 (while line)


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
"quote" => $quote,
"author" => $author


How can I get my program to run via php cli?


Check if $handle is a resource (or is false) first. For example:

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

Also, in CLI, your file paths are different. So you need to be more explicit. The easiest way to do this, if $csvFile is located in a relative path to the script, is to define the path such as:

__DIR__ . "feeds/data.csv"