Php cURL可以在CLI中工作,但不能在HTTP上工作:无法解析主机

Php cURL可以在CLI中工作,但不能在HTTP上工作:无法解析主机,php,curl,dns,Php,Curl,Dns,我在cURL上遇到了一个问题,任何请求返回的都无法解析主机:example.com;从浏览器访问脚本时,名称或服务未知 但是,如果从cli运行完全相同的脚本,则会得到预期的响应 下面是我用来测试的脚本的一小部分: $curl = curl_init('http://example.com'); $options = [ CURLOPT_RETURNTRANSFER => true, // return web page CURLOPT_HEADER =

我在cURL上遇到了一个问题,任何请求返回的
都无法解析主机:example.com;从浏览器访问脚本时,名称或服务未知

但是,如果从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上。我联系了主机的支持人员,但他们没有太多的见解。有人能为我指出正确的方向吗?

我们最近在虚拟机堆栈上的一个live CentOS机箱上遇到了这个问题

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