我有一台有两个不同IP的服务器。我需要从第一个IP发送奇怪的卷曲请求,甚至从第二个IP发送。如何选择传出IP地址?
我的PHP脚本是这样的:
$curlh = curl_init($url);
curl_setopt($curlh, CURLOPT_USERAGENT, $uagent);
curl_setopt($curlh, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curlh);
我该怎么办?
答案 0 :(得分:53)
您可能想尝试设置CURLOPT_INTERFACE
选项:
curl_setopt($curlh, CURLOPT_INTERFACE, "xxx.xxx.xxx.xxx");
CURLOPT_INTERFACE:要使用的传出网络接口的名称。这可以是接口名称,IP地址或主机名。
编辑:修复示例,正如@Michael Hart pointed out在其他答案中指出的那样。
答案 1 :(得分:25)
由于我还不能回复,只想添加Daniel Vassallo的回答。虽然他是对的,但他的榜样却不是。
CURLOPT_INTERFACE是一个常量,不能放在引号内。这可能会导致一些人可能会复制和粘贴一些混淆,只是发现它不起作用。正确的代码是:
curl_setopt($curlh, CURLOPT_INTERFACE, "xxx.xxx.xxx.xxx");
另外,对于Linux系统(我确定Windows,但它不会完全相同),我想指出你不必使用IP地址。如果您知道ethN接口,则可以使用“eth0”,“eth1”或“eth0:0”,具体取决于网络的配置方式。这可能是更优选的,因为代码不是特定于1台机器,并且可能适合更广泛的配置(例如,集群)。