从CLI调用时fgetcsv抛出错误

时间:2016-12-01 19:13:55

标签: php cron fgetcsv

通过浏览器检查时可以运行我的php文件,但是在通过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运行?

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:0)

好像你的PHP代码找不到文件(因为fopen返回false)。

我认为你应该使用完整路径而不是亲戚,因为你在cmd中运行它。

您应该像以下一样设置路径:

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

如果" feed"它应该有用。 directory与PHP文件位于同一目录中。