为curl请求选择传出ip

Ser*_*gey 35 php ip curl

我有一个有两个不同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);
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

Dan*_*llo 54

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

curl_setopt($curlh, CURLOPT_INTERFACE, "xxx.xxx.xxx.xxx");
Run Code Online (Sandbox Code Playgroud)

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

来自:php手册:curl_setopt


编辑:修复示例,正如@Michael Hart指出的在另一个答案中指出的那样.


小智 26

由于我还不能回复,只想添加Daniel Vassallo的回答.虽然他是正确的,但他的榜样却不是.

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

curl_setopt($curlh, CURLOPT_INTERFACE, "xxx.xxx.xxx.xxx");
Run Code Online (Sandbox Code Playgroud)

此外,对于Linux系统(我确定Windows,但它不会完全相同),我想指出你不必使用IP地址.如果您知道ethN接口,则可以使用"eth0","eth1"或"eth0:0",具体取决于网络的配置方式.这可能是更优选的,因为代码不是特定于1台机器,并且可能适合更广泛的配置(例如,集群).