获取PHP cURL请求的可用网络接口

获取PHP cURL请求的可用网络接口,php,curl,Php,Curl,我知道我可以使用PHP中的CURLOPT_interface为传出cURL连接指定网络接口或IP地址,如下所示: curl_setopt($curl, CURLOPT_INTERFACE, '192.168.0.1'); $ips = gethostbynamel(gethostname()); 有没有办法以编程方式检索服务器上配置的所有可用接口的列表?目前我正在bash中执行此操作: cat /etc/network/interfaces 这是在基于Debian的服务器上配置网络接口的

我知道我可以使用PHP中的
CURLOPT_interface
为传出cURL连接指定网络接口或IP地址,如下所示:

curl_setopt($curl, CURLOPT_INTERFACE, '192.168.0.1');
 $ips = gethostbynamel(gethostname());
有没有办法以编程方式检索服务器上配置的所有可用接口的列表?目前我正在bash中执行此操作:

cat /etc/network/interfaces

这是在基于Debian的服务器上配置网络接口的地方,但我希望在php脚本中获得这些信息,而不需要对上述文件的shell访问或读取权限,理想情况下,这些信息可以在不同的服务器环境中工作。

假设您已使用适当的条目设置了
/etc/hosts
,您应该能够获得如下IP地址数组:

curl_setopt($curl, CURLOPT_INTERFACE, '192.168.0.1');
 $ips = gethostbynamel(gethostname());
在我的系统上,
var\u dump($ips)
返回以下内容:

array(3) {
  [0]=>
  string(9) "127.0.0.1"
  [1]=>
  string(9) "127.0.0.1"
  [2]=>
  string(15) "192.168.31.14"
}

返回IP地址列表,而不是只进行简单查找并返回找到的第一个地址。

这非常棒,但不是我所需要的,因为我不一定依赖于它的配置,配置它需要sudo priv和shell访问。尽管如此,我不知道
gethostnamebyl()
,所以谢谢你的提示。我认为唯一的其他选择是使用
exec()
或friends运行
ifconfig
,这也需要服务器端的配置才能允许。假设
gethostnamebyl()
返回所有可能可用的IP(并且没有任何遗漏),那么从理论上讲,您可以使用
CURLOPT_INTERFACE
为每个对象运行一个简单的curl请求,没有错误的是配置的。您可能只希望每次执行一次(甚至每天一次,并将结果存储在文件或数据库之类的地方)。