为curl请求选择传出ip

时间:2010-03-11 14:23:43

标签: php curl ip

我有一台有两个不同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);

我该怎么办?

2 个答案:

答案 0 :(得分:53)

您可能想尝试设置CURLOPT_INTERFACE选项:

curl_setopt($curlh, CURLOPT_INTERFACE, "xxx.xxx.xxx.xxx");
  

CURLOPT_INTERFACE:要使用的传出网络接口的名称。这可以是接口名称,IP地址或主机名。

来自:php Manual: curl_setopt


编辑:修复示例,正如@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台机器,并且可能适合更广泛的配置(例如,集群)。