Php 为什么curl说所有使用http的网站都可用?

Php 为什么curl说所有使用http的网站都可用?,php,http,curl,Php,Http,Curl,我正在使用cURL脚本检查网站是否可用 但它不能正常工作;根据它的说法,所有具有http://的URL都是可用的。为什么会这样 这是我的密码: function isDomainAvailible($domain) { //check, if a valid url is provided if(!filter_var($domain, FILTER_VALIDATE_URL)) { return false; } //initializ

我正在使用
cURL
脚本检查网站是否可用

但它不能正常工作;根据它的说法,所有具有http://的URL都是可用的。为什么会这样

这是我的密码:

function isDomainAvailible($domain)
{
    //check, if a valid url is provided
    if(!filter_var($domain, FILTER_VALIDATE_URL))
    {
        return false;
    }

    //initialize curl
    $curlInit = curl_init($domain);
    curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
    curl_setopt($curlInit,CURLOPT_HEADER,true);
    curl_setopt($curlInit,CURLOPT_NOBODY,true);
    curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);

    //get answer
    $response = curl_exec($curlInit);

    curl_close($curlInit);

    if ($response) return true;

    return false;
    }

谢谢大家!

尝试使用
curl\u getinfo()
获取curl exec信息

//get answer
$response = curl_exec($curlInit);
echo '<pre>';
print_r($response);
print_r(curl_getinfo($curlInit));
$info = curl_getinfo($curlInit);
if ($info['http_code'] == '200')
  return true;
else 
  retrun 'Curl error: ' . curl_error($curlInit);
域也必须类似:-(使用http://) 如果您指定的URL没有protocol://前缀,curl将尝试猜测您可能需要的协议。然后它将默认为HTTP,但尝试基于常用主机名前缀的其他协议。例如,对于以“ftp”开头的主机名,curl将假定您想说ftp。 内容如下:


要了解更多信息,请阅读手册:-

从代码判断,您可能是在一个透明的web代理之后,或者由一个非标准名称服务器提供服务

透明代理将代表您发出请求并返回其响应。如果是这样的话,在不存在位置的情况下,它似乎仍然会返回200状态码

非标准名称服务器可能返回承载自定义登录页的web服务器的IP地址(请考虑“销售域”),而不是返回查找错误

通过设置适当的选项,可以请求cURL提供更多调试信息:


最后,检查返回的主体以查看返回的内容。从这里可以明显看出以上哪种情况适用于这里。

进行
var\u转储($response)curl\u exec()
调用分配代码后,在该行上单击code>。您还可以使用
curl\u error()
进行进一步调试。您有什么响应,您的域是什么?您能给出一个实际错误的参数/结果的示例吗?使用http://的任何内容都是正确的,即使这样:您的
http://www.xsgjlcdgjklxsdgjksdflk.com/
example使用您提供的代码为我返回
false
。我给出检查建议好的,您是对的,这只适合我。但是我怎么能修好它呢?我不希望像我这样设置了网络的网站用户能够破坏我的网站。没有人可以通过更改DNS配置来破坏你的网站,但你肯定应该考虑修复你自己的设置:)请与你的托管提供商联系。问题是,cURL会检查用户输入的url是否有效,并将其输入数据库(如果是)。如果对他们来说这是正确的,那么这会使他们在数据库中输入错误的条目吗?此外,我无法更改我的网络设置-我认为这是我的大学wifi。@SimonH无论是哪种情况,你都应该向你的主机提供商查询,以了解上述哪种说法是正确的,以及他们如何修复它。@SimonH,等等,你正在使用学校wifi网络运行服务器?
curl_setopt($curlInit, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curlInit, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 1);