Php 重定向到URL时抛出错误

Php 重定向到URL时抛出错误,php,Php,我有一个函数,我用来测试URL是否有效,然后再将其存储到数据库中 function url_exists($url) { ini_set("default_socket_timeout","5"); set_time_limit(5); $f = fopen($url, "r"); $r = fread($f, 1000); fclose($f); return strlen($r) > 1; } if( !url_exists($tes

我有一个函数,我用来测试URL是否有效,然后再将其存储到数据库中

function url_exists($url)
{
    ini_set("default_socket_timeout","5");
    set_time_limit(5);
    $f = fopen($url, "r");
    $r = fread($f, 1000);
    fclose($f);

    return strlen($r) > 1;
}

if( !url_exists($test['urlRedirect']) ) { ... }
它工作得很好,但是今天我的一个用户报告了一个问题,当我测试时,确实以下URL被标记为无效:


因此,我试图删除页面名,只使用域,但仍然得到了错误。我的脚本被这个领域的什么东西噎住了?

你试着在那里用瑞士刀喝汤

PHP支持
文件中的URL包装器\u存在

if (file_exists("http://www.artleaguehouston.org/charge-grant-survey")) {
    // URL returns a good status code for your IP and User Agent "PHP/x.x.x"
}
卷曲:


(主要取自,只是为了给予正确的评价)。

可能重复的我认为有更好的解决方案,也许您需要检查这些问题。许多服务器设置为不允许尝试从脚本(如PHP脚本)访问。当试图从PHP访问时,该URL返回403禁止。你需要用一些更复杂的东西,比如卷发。让我来试一试。只有一件事,$curl是从哪里来的?是不是应该是$ch?@santa你也应该看看不同的状态代码,有些网站会重定向,然后代码是
302
301
,但这并不意味着无法访问URL。只需谷歌
http状态码
。基本上,当给出任何状态代码时,站点都会启动,因为如果主机关闭,就会导致错误。在这里还可以查看卷发选项:
$ch = curl_init('http://www.artleaguehouston.org/charge-grant-survey');
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_USERAGENT,
    'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0'
);
curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($statusCode == 200) {
    // Site up and good status code
}