我遇到了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上。我联系了对主持人的支持,但他们没有太多的见解。有人能指出我正确的方向吗?
答案 0 :(得分:0)
我们最近在VM堆栈上的一个实时CentOS机器上遇到了这个问题。
在我们的案例中,此问题是由cURL使用的OpenSSL和glibc共享库的最新操作系统更新引起的。重新启动Apache / nginx / PHP-FPM服务为我们解决了这个问题。