feof():3不是有效的流资源

时间:2013-07-14 10:55:10

标签: php

在我的桌面上安装了Windows 8并重新安装了aptana和xampp后,我无法使用!feof($ handle)。我想得到存储在我的$ symb arra中的nasdaq的符号。这是一个例子和我的错误:

$symb = array();
$url = "http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download";
$handle = fopen("$url","r");
while( !feof($handle) ){
    $line = fgetcsv($handle, 1024);
    if($line!="Symbol" && isset($line[0]) && $line[0] != null   ){
        $symb[] = trim($line[0]);
    }
    fclose($handle);
}

我的错误:

警告:feof():3不是第61行的C:\ xampp \ htdocs \ demos \ screener \ candleScreener.php中的有效流资源

警告:fgetcsv():3在第62行的C:\ xampp \ htdocs \ demos \ screener \ candleScreener.php中不是有效的流资源

警告:fclose():3在第66行的C:\ xampp \ htdocs \ demos \ screener \ candleScreener.php中不是有效的流资源 .......

是否有必须在php.ini文件上更改的设置或它可能是什么? 感谢。

    .....
$url = "http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download";
$handle = fopen("$url","r");
$txt = fread( $handle, 8 );
print_r($txt);
    .....

打印出来: “符号”

所以我的fopen()很好......

2 个答案:

答案 0 :(得分:13)

重新安装和fopen()是红色鲱鱼。在读取文件之前,您正在关闭while循环内的文件句柄。

while( !feof($handle) ){
    $line = fgetcsv($handle, 1024);
    if($line!="Symbol" && isset($line[0]) && $line[0] != null   ){
        $symb[] = trim($line[0]);
    }
    // fclose($handle); // Move this outside the while loop
}
fclose($handle); // Moved this outside the while loop

答案 1 :(得分:0)

我的代码中有同样的问题。我在代码中有一个额外的文件关闭功能。换句话说,我试图第二次写入该文件,并且该文件未开放使用。我在程序的顶部编写了此代码:

$newFile = $local_directory . $tenant.'-'.$namespace.'_Stats.xml';
$newDoc = fopen($newFile, "w");
fwrite($newDoc, $urlStats);
fwrite($newDoc, $response);
fclose($newDoc);

然后我有:

fwrite($newDoc, $response);
fclose($newDoc);

在写入更多内容之前,请检查并确保文件已打开。