卷曲无法解决的主持人?

时间:2014-11-17 09:45:18

标签: php curl dns

我需要将Curl从PHP网站发送到目标计算机无法解析的主机(curl_error返回(6) couldn't resolve host)。虽然它在我的本地机器上可以解析,所以经过一些网络搜索后我发现它可能是一个DNS缓存问题。
我只有FTP访问此网络服务器,所以我不能restart Apache or edit the r.conf file 我使用从ping域获取的IP地址尝试了Curling,但不幸的是我需要向子域(例如,api.domain.com)发出请求,并且对IP地址的请求直接得到不同的处理。

我曾希望我可以在Host标头中指定子域+域(见下文),但这也不起作用。

$curl = curl_init();

$opt = array(
    CURLOPT_URL => 'http://11.22.33.44/handler.php?params=1',
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_HTTPHEADER => array('Host: subdomain.domain.com')
);
curl_setopt_array($curl, $opt);
$output = curl_exec($curl);

1 个答案:

答案 0 :(得分:1)

主机的另一种方式:摆弄(如果你使用足够新的PHP版本,显然这是在5.5或更高版本中)是使用"假的"预先填充libcurl DNS缓存。输入主机名,然后您可以使用URL中的主机名。

请参阅CURLOPT_RESOLVE选项,该选项在PHP文档中看起来很糟糕,但可以在错误跟踪器中找到:https://bugs.php.net/bug.php?id=63488&edit=1

基础libcurl选项CURLOPT_RESOLVE记录在curl网站上。