在PHP中检查文件句柄类型

在PHP中检查文件句柄类型,php,fopen,file-handling,Php,Fopen,File Handling,我正在使用fopen从URL打开提要(.txt文件),但有时找不到提要。发生这种情况时,我希望fopen返回FALSE,以便处理错误。但是,当在目标URL上找不到提要时,会将我重定向到站点上的另一个页面,通知我找不到指定的文件。结果是,我的$handle引用了错误的文件,而fopen返回TRUE(因为它发现了一些东西,尽管是错误的东西),从而破坏了我处理错误的尝试 如何验证fopen是否拥有正确的文件?谢谢 if ($handle = fopen($feed, "r")) { //fope

我正在使用fopen从URL打开提要(.txt文件),但有时找不到提要。发生这种情况时,我希望fopen返回FALSE,以便处理错误。但是,当在目标URL上找不到提要时,会将我重定向到站点上的另一个页面,通知我找不到指定的文件。结果是,我的$handle引用了错误的文件,而fopen返回TRUE(因为它发现了一些东西,尽管是错误的东西),从而破坏了我处理错误的尝试

如何验证fopen是否拥有正确的文件?谢谢

if ($handle = fopen($feed, "r")) {
   //fopen returned true, do stuff
} else {
   //fopen returned false, quit
   die("Fail.");
}

您可以让http包装器忽略重定向,如下所示:

$opts = array(
    'http' => array('method' => 'GET',
                    'max_redirects' => '0')
);

$context = stream_context_create($opts);
$handle = fopen($feed, 'r', false, $context);

试着使用instead-1 use从您的(HTTP?)请求中检测到这一点会更好,而不是在问题发生后尝试检测问题。我不太确定,但提要应该是某种xml,对吗?因此,在将字符串传递给xml读取器后,可以检查根节点是否为
isset()。