我可以在PHP中禁用DNS查找吗?我有IP地址和主机名

时间:2013-12-03 11:34:36

标签: php dns httprequest

我们拥有使用相同域名但不同IP地址的网站镜像 - 它用于全球缓存。

要检查镜像是否正常工作,理论上我们可以使用:

$request = new HttpRequest();
...
// IP address of mirror
$request->setUrl('http://xxx.xxx.xxx.xxx');
$request->setHeaders(array('host' => 'domainname.com'));
...
$request->send();

但是这会出现错误,说“'HttpRequestException',消息'无法解析主机名; ...”

我们已经知道IP地址和主机名,那么有没有办法在PHP中禁用DNS查找?或者在http请求标题中?

注意:

我需要登录并拥有cookie,所以我不能使用ping。此外,网站需要认为它是正确的域名,这就是我在标题中使用“主机”的原因。

更新1:

尝试用curl替换HttpRequest但是这会给出相同的错误消息:

$curl = curl_init()
...
curl_setopt($curl, CURLOPT_URL, 'http://xxx.xxx.xxx.xxx');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Host: domainname.com'));
...
if (!curl_exec($curl)) {
    echo curl_error($curl);
    // Output is 'Couldn't resolve host 'domainname.com'
}

更新2:

啊......看起来像是因为重定向。我也有以下设置

curl_setopt($curl, CURLOPT_MAXREDIRS, 10);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

从命令行,这可以正常工作

curl --header "Host: domainname.com" http://xxx.xxx.xxx.xxx

但是当我尝试登录

时却没有
curl --header "Host: domainname.com" --location --data "username=username&password=password" http://xxx.xxx.xxx.xxx/login.php

我得到了

curl: (6) Couldn't resolve host 'domainname.com'

我可以保留ipaddress +主机组合吗?或者我可能需要循环重定向?

1 个答案:

答案 0 :(得分:1)

不了解HttpRequest,但您可以尝试使用CURL,如下所示: PHP cURL doesn't see the /etc/hosts file

只需将URL设置为IP地址,将主机标头设置为域名,它应该可以根据需要运行。