将以下方式重新启动我的PHP查询(CURL,fsockopen,file_get_contents) source.com到x.x.x.x :
赢得操作系统:
c:\Windows\System32\drivers\etc\hosts
x.x.x.x source.com
Linux操作系统:
$ sudo gedit /etc/hosts
x.x.x.x source.com
是否可以在Apache或PHP配置级别执行此操作(即,不会干扰hosts文件)?
答案 0 :(得分:1)
所以你想强制domain1.com
的DNS解析到另一个IP(比如domain2.com
的IP),但是不想使用/etc/hosts
做这个并且想做它仅在Apache或PHP配置中。
问题在于,问题是PHP使用您在/etc/resolv.conf
和/etc/hosts
中设置的服务器DNS设置作为覆盖,而Apache只是一个Web服务器,因此无法更改应用程序的逻辑或控制它联网。
这里更干净的是将domain2.com
的IP保存在php配置文件中并使用curl而不是domain1.com
调用该IP,您仍然可以添加Host: domain1.com
标题如果需要,可以进行HTTP调用。
编辑:这是一个在PHP中使用curl的例子。
让我们说
domain1.com
的IP为1.1.1.1
domain2.com
的IP为2.2.2.2
如果您的目标是使用域2.2.2.2
来呼叫domain1.com
,则只需更改HTTP请求的Host
标头,如下所示:
<?php
$ch = curl_init('http://2.2.2.2/');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: domain1.com'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);