cURL在CLI中工作但在HTTP上不工作:无法解析主机

时间:2018-06-14 12:01:33

标签: php curl dns

我遇到了cURL的问题,当从浏览器访问脚本时,任何请求都返回Could not resolve host: example.com; Name or service not known

但是,如果我从cli运行相同的脚本,我会得到预期的响应。

以下是我用来测试的脚本的信息:

$curl = curl_init('http://example.com');

$options = [
    CURLOPT_RETURNTRANSFER => true,   // return web page
    CURLOPT_HEADER         => false,  // don't return headers
    CURLOPT_FOLLOWLOCATION => true,   // follow redirects
    CURLOPT_MAXREDIRS      => 10,     // stop after 10 redirects
    CURLOPT_AUTOREFERER    => true,   // set referrer on redirect
    CURLOPT_CONNECTTIMEOUT => 120,    // time-out on connect
    CURLOPT_TIMEOUT        => 120,    // time-out on response
    CURLOPT_HTTPHEADER     => array('Content-type: text/plain', 'Accept: */*')
];

curl_setopt_array($curl, $options);

try {
    $output = curl_exec($curl);
} catch (Exception $e)
{
    print_r($e);
}

if($output === false){
    echo curl_error($curl); //returns "Could not resolve host: example.com; Name or service not known" when accessed from browser
}
else {
    print_r($output); //returns expected response when called from cli
}
curl_close($curl);

此问题最近开始,并托管在托管VM上。我联系了对主持人的支持,但他们没有太多的见解。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

我们最近在VM堆栈上的一个实时CentOS机器上遇到了这个问题。

在我们的案例中,此问题是由cURL使用的OpenSSL和glibc共享库的最新操作系统更新引起的。重新启动Apache / nginx / PHP-FPM服务为我们解决了这个问题。