检查 PHP 中的文件句柄类型

发布于 2024-11-28 13:22:29 字数 404 浏览 0 评论 0原文

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

如何验证 fopen 是否获得了正确的文件?谢谢。

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

I'm using fopen to open a feed (.txt file) from a URL but sometimes the feed isn't found. I would like fopen to return FALSE when this happens, so I can handle the error. However, when the feed isn't found on the target URL, I'm being redirected to another page on the site, informing me that the specified file wasn't found. The result being, my $handle refers to the wrong file, and fopen returns TRUE (because it has found -something- albeit the wrong thing), thus sabotaging my attempt at error handling.

How can I verify that fopen has got the right file? Thanks.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

差↓一点笑了 2024-12-05 13:22:29

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

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

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

You can get the http wrapper to ignore redirects as follows:

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

$context = stream_context_create($opts);
$handle = fopen($feed, 'r', false, $context);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文