从 CLI 调用时 fgetcsv 抛出错误

fgetcsv throwing error when calling from CLI

运行 我的 php 文件在通过浏览器检查时是否正常,但在通过 CLI 运行 时抛出无限循环错误:

fgetcsv() 期望参数 1 为资源,第 30 行(while 行)给出的布尔值

代码:

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 将我的程序安装到 运行?

首先检查 $handle 是否为资源(或为 false)。例如:

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

此外,在 CLI 中,您的文件路径不同。所以你需要更明确。如果 $csvFile 位于脚本的相对路径中,最简单的方法是定义路径,例如:

__DIR__ . "feeds/data.csv"

您的 PHP 代码似乎没有找到文件(因为 fopen returns false)。

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

你应该像下面这样设置你的路径:

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

如果 "feeds" 目录与 PHP 文件位于同一目录中,它应该可以工作。