在我的桌面上安装了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()很好......
答案 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);
在写入更多内容之前,请检查并确保文件已打开。