我需要将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);
答案 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网站上。