从专用IP而不是共享IP发送PHP请求

我为一个网站(使用directadmin)设置了一个专用IP,但是所有的传出php请求都是从服务器的共享IP发送的。 以下代码的结果总是共享IP。

$a = file_get_contents("http://mxtoolbox.com/WhatIsMyIP/"); print $a; 

我需要从专用IP发送请求,因为我的付款网关只接受来自该IP的请求。

我是否需要添加iptables规则来发送来自专用IP的所有请求,还是有更好的方法?

通过专用IP设置支付处理器的路由。 ip route add命令是你的朋友。

这应该在StackOverflow。 您需要为您的套接字创build一个上下文。

 $opts = array( 'socket' => array( 'bindto' => '10.10.1.1:0', ) ); $context = stream_context_create($opts); $a = file_get_contents("http://mxtoolbox.com/WhatIsMyIP/", false, $context); print $a; 

在这个例子中,这将绑定到IP 10.10.1.1。 端口0用于允许操作系统select端口。

否则,您必须更改所有stream量的默认路由或确定您尝试访问的网站的IP地址。 如果他们使用分布式networking或更改他们的地址,后者可能是不可靠的。