【问题标题】:select outgoing ip for curl request为 curl 请求选择传出 IP
【发布时间】:2011-01-26 09:47:08
【问题描述】:

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

我的 PHP 脚本是这样的:

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

我该怎么做?

【问题讨论】:

    标签: php curl ip


    【解决方案1】:

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

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

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

    发件人:php Manual: curl_setopt


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

    【讨论】:

      【解决方案2】:

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

      CURLOPT_INTERFACE 是一个常量,不能放在引号内。这可能会导致一些人感到困惑,他们可能会复制和粘贴只是发现它不起作用。正确的代码是:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-12
        • 1970-01-01
        • 2015-05-02
        • 2012-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多