【问题标题】:PHP curl returns error: Couldn't resolve host 'www.xxx.com'. How can I solve this?PHP curl 返回错误:无法解析主机 'www.xxx.com'。我该如何解决这个问题?
【发布时间】:2016-07-17 22:22:33
【问题描述】:

此函数返回 null 并打印错误:

无法解析主机“www.xxx.com”

function file_get_html_using_cURL($url) {
    if (!function_exists('curl_init')){ 
        die('CURL is not installed!');
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $output = curl_exec($ch);
    if(curl_errno($ch)){
        echo 'Curl error: ' . curl_error($ch);
        echo "\n--------------------\n";
        print_r(curl_getinfo($ch));
        echo "\n--------------------\n";
    }
    $output = str_get_html($output); // <-- Important line to convert string into object!
    curl_close($ch);
    return $output;
}

当我在 localhost 中加载此代码时,它可以工作。但是当我将它上传到远程服务器时它会抛出错误。

我猜测远程服务器已阻止 CURL 执行。

这是一个免费服务器,所以我无法更改 php.ini 中的任何设置

有没有办法解决这个问题?

附:

file_get_content($url)

也被阻止。所以我尝试使用 curl 代替。但不是 curl 似乎不再起作用了。

【问题讨论】:

  • 您能 ping 任何主机吗?ping google.com?如果没有,则编辑 /etc/resolv.conf 并放置一行 nameserver 8.8.8.8
  • 我认为是您的 dns 的问题。请联系您的系统管理员并检查防火墙
  • @ChetanAmeta 服务器管理员说 php curl 应该可以正常工作。这是PHP设置。 112.175.184.89/phptest.php 是不是和DNS无关的东西?对不起,我是初学者..
  • 尝试在服务器的终端上ping域也可以在关闭防火墙后尝试

标签: php curl file-get-contents


【解决方案1】:

请检查以下代码并验证您的服务器问题。

$curl = curl_init();
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPGET, 1);
curl_setopt($curl, CURLOPT_URL, 'YOUR_URL' );
curl_setopt($curl, CURLOPT_DNS_USE_GLOBAL_CACHE, false );
curl_setopt($curl, CURLOPT_DNS_CACHE_TIMEOUT, 2 );

var_dump(curl_exec($curl));
var_dump(curl_getinfo($curl));
var_dump(curl_error($curl)); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多