2010-03-11 92 views
32

我有一个服务器与两个不同的IP。我需要从第一个IP发送奇怪的curl请求,甚至从第二个发送请求。我如何选择传出IP地址?选择传出IP卷曲请求

我的PHP脚本是这样的:

$curlh = curl_init($url); 
curl_setopt($curlh, CURLOPT_USERAGENT, $uagent); 
curl_setopt($curlh, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($curlh); 

我该怎么办呢?

回答

48

你可能要尝试设置CURLOPT_INTERFACE选项:

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

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

来源:php Manual: curl_setopt


编辑:固定例如,@Michael Hart pointed out在对方的回答指出。

24

由于我还不能回复,只是想补充Daniel Vassallo的回答。虽然他是正确的,但他的榜样不是。

CURLOPT_INTERFACE是一个常量,不能放在引号内。这可能会造成一些混淆,只有复制和粘贴才能发现它不起作用。正确的代码是:

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

此外,对于Linux系统(我敢肯定,Windows,但它不会是完全一样的),我觉得他指出,你不必使用IP地址。如果您知道ethN接口,则根据网络的配置方式,您可以简单地使用“eth0”,“eth1”或“eth0:0”。这可能是更优选的,因为代码不会特定于1台机器,并且可能适合更广泛的配置(例如群集)。