Получить доступные сетевые интерфейсы для запроса PHP cURL - PullRequest
0 голосов
/ 12 ноября 2018

Мне известно, что я могу указать сетевой интерфейс или IP-адрес для исходящих соединений cURL, используя CURLOPT_INTERFACE в PHP следующим образом:

curl_setopt($curl, CURLOPT_INTERFACE, '192.168.0.1');

Есть ли способ программно получить список всех доступных интерфейсов, настроенных на сервере? В настоящее время я делаю это в Bash:

cat /etc/network/interfaces

Это - то, где сетевые интерфейсы настроены на моем сервере на основе Debian, но я хотел бы получить эту информацию в сценарии php без необходимости доступа к оболочке или разрешения на чтение к указанному выше файлу - и в идеале что-то, что работает в различных серверных средах .

1 Ответ

0 голосов
/ 12 ноября 2018

Предполагая, что вы настроили /etc/hosts с соответствующими записями, вы сможете получить массив IP-адресов, таких как:

 $ips = gethostbynamel(gethostname());

В моей системе var_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"
}

gethostbynamel() возвращает список IP-адресов, в отличие от gethostbyname(), который просто выполняет простой поиск и возвращает первый найденный адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...