Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在PHP中禁用DNS查找吗?我有IP地址和主机名_Php_Dns_Httprequest - Fatal编程技术网

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

我可以在PHP中禁用DNS查找吗?我有IP地址和主机名,php,dns,httprequest,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(); 但这

我们有一个使用相同域名但不同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请求头中

注:

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

更新1:

尝试将HttpRequest替换为curl,但这会给出相同的错误消息:

$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
我明白了


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

我不知道HttpRequest,但您可以尝试像这样使用CURL:


只要将URL设置为IP地址,主机头设置为域名,它就可以根据需要工作。

为什么要使用主机头?那还不够吗?在最坏的情况下,在端口80上发出TCP-IP请求。谢谢Boris,但我也必须登录-我先登录,然后查看页面是否存在-而且该网站将只使用正确的域名而不是IP地址。谢谢Serge,我认为curl可能是答案-只是看了一下curl vs httprequest-似乎httprequest使用了curl。。。
curl: (6) Couldn't resolve host 'domainname.com'